Namespaces
Variants

std:: ws

From cppreference.net
< cpp ‎ | io ‎ | manip
Défini dans l'en-tête <istream>
template < class CharT, class Traits >
std:: basic_istream < CharT, Traits > & ws ( std:: basic_istream < CharT, Traits > & is ) ;

Ignore les espaces blancs de début dans un flux d'entrée.

Se comporte comme une UnformattedInputFunction , sauf que is. gcount ( ) n'est pas modifié. Après avoir construit et vérifié l'objet sentinelle, extrait les caractères du flux et les ignore jusqu'à ce que l'une des conditions suivantes se produise :

  • une condition de fin de fichier se produit dans la séquence d'entrée (auquel cas la fonction appelle setstate ( eofbit ) mais ne définit pas failbit ; ceci ne s'applique pas si le eofbit est déjà défini sur is avant l'appel à ws , auquel cas la construction de l'objet sentry définirait failbit ).
  • le prochain caractère disponible c dans la séquence d'entrée n'est pas un espace blanc tel que déterminé par std:: isspace ( c, is. getloc ( ) ) . Le caractère non-espace n'est pas extrait.

Ceci est un manipulateur d'E/S en entrée uniquement, il peut être appelé avec une expression telle que in >> std :: ws pour tout in de type std::basic_istream .

Table des matières

Paramètres

est - référence au flux d'entrée

Valeur de retour

is (référence au flux après extraction des espaces consécutifs).

Notes

Si eofbit est défini sur le flux avant l'appel, la construction de l'objet sentry définira failbit .

Exemple

#include <iomanip>
#include <iostream>
#include <istream>
#include <sstream>
#include <string>
int main()
{
    for (const char* str : {"     #1 test", "\t #2 test", "#3 test"})
    {
        std::string line;
        std::getline(std::istringstream{str}, line);
        std::cout << "getline returns:\t" << std::quoted(line) << '\n';
        std::istringstream iss{str};
        std::getline(iss >> std::ws, line);
        std::cout << "ws + getline returns:\t" << std::quoted(line) << '\n';
    }
}

Sortie :

getline returns:	"     #1 test"
ws + getline returns:	"#1 test"
getline returns:	"	 #2 test"
ws + getline returns:	"#2 test"
getline returns:	"#3 test"
ws + getline returns:	"#3 test"

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 415 C++98 l'appel à std::ws pouvait ne pas construire l'objet
sentry (incohérent avec les autres fonctions d'entrée)
requis de construire
l'objet sentry

Voir aussi

extrait et ignore les caractères jusqu'à ce que le caractère spécifié soit trouvé
(fonction membre publique de std::basic_istream<CharT,Traits> )