Namespaces
Variants

operator<<,>> (std::basic_string)

From cppreference.net
std::basic_string
Défini dans l'en-tête <string>
template < class CharT, class Traits, class Allocator >

std:: basic_ostream < CharT, Traits > &
operator << ( std:: basic_ostream < CharT, Traits > & os,

const std:: basic_string < CharT, Traits, Allocator > & str ) ;
(1)
template < class CharT, class Traits, class Allocator >

std:: basic_istream < CharT, Traits > &
operator >> ( std:: basic_istream < CharT, Traits > & is,

std:: basic_string < CharT, Traits, Allocator > & str ) ;
(2)
1) Se comporte comme une FormattedOutputFunction . Après avoir construit et vérifié l'objet sentinelle, détermine le remplissage du format de sortie .

Insère ensuite chaque caractère de la séquence résultante seq (le contenu de str plus le remplissage) dans le flux de sortie os comme en appelant os. rdbuf ( ) - > sputn ( seq, n ) , où n est std:: max ( os. width ( ) , str. size ( ) ) . Enfin, appelle os. width ( 0 ) pour annuler les effets de std::setw , s'il y en a.

Équivalent à return os << std:: basic_string_view < CharT, Traits > ( str ) ; .

(depuis C++17)
2) Se comporte comme une FormattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs initiaux, efface d'abord str avec str. erase ( ) , puis lit les caractères de is et les ajoute à str comme par str. append ( 1 , c ) , jusqu'à ce qu'une des conditions suivantes soit remplie :
  • N caractères sont lus, où N est is. width ( ) si is. width ( ) > 0 , sinon N est str. max_size ( ) ,
  • la condition de fin de fichier se produit dans le flux is , ou
  • std:: isspace ( c, is. getloc ( ) ) est true pour le caractère suivant c dans is (ce caractère d'espacement reste dans le flux d'entrée).

Si aucun caractère n'est extrait, std::ios::failbit est défini sur is , ce qui peut lever std::ios_base::failure .

Enfin, appelle is. width ( 0 ) pour annuler les effets de std::setw , le cas échéant.

Table des matières

Exceptions

1) Peut lever std::ios_base::failure si une exception est levée pendant la sortie.
2) Peut lever std::ios_base::failure si aucun caractère n'est extrait de is (par exemple, le flux est en fin de fichier, ou ne contient que des espaces), ou si une exception est levée pendant la saisie.

Paramètres

os - un flux de sortie de caractères
is - un flux d'entrée de caractères
str - la chaîne à insérer ou extraire

Valeur de retour

1) os
2) is

Exemple

#include <iostream>
#include <sstream>
#include <string>
int main()
{
    std::string greeting = "Hello, whirled!";
    std::istringstream iss(greeting);
    std::string hello_comma, whirled, word;
    iss >> hello_comma;
    iss >> whirled;
    std::cout << greeting << '\n'
              << hello_comma << '\n' << whirled << '\n';
    // Reset the stream
    iss.clear();
    iss.seekg(0);
    while (iss >> word)
        std::cout << '+' << word << '\n';
}

Sortie :

Hello, whirled!
Hello,
whirled!
+Hello,
+whirled!

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 25 C++98 n était le plus petit entre os. width ( ) et str. size ( ) n est le plus grand des deux
LWG 90 C++98 std:: isspace ( c, getloc ( ) ) était utilisé pour vérifier
les espaces, mais getloc n'est pas déclaré dans <string>
remplacé getloc ( )
par is. getloc ( )
LWG 91 C++98 operator>> ne se comportait pas
comme une FormattedInputFunction
se comporte comme une
FormattedInputFunction
LWG 211 C++98 operator>> ne positionnait pas failbit si aucun caractère n'était extrait positionne failbit
LWG 435 C++98 les caractères étaient insérés par os. rdbuf ( ) - > sputn ( str. data ( ) , n ) ,
et la résolution de LWG issue 25 rendait le comportement
indéfini si os. width ( ) est plus grand que str. size ( )
détermine d'abord le remplissage
et insère la séquence de caractères
complétée à la place
LWG 586 C++98 operator<< ne se comportait pas
comme une FormattedOutputFunction
se comporte comme une
FormattedOutputFunction

Voir aussi

(C++17)
effectue la sortie de flux sur les vues de chaîne
(modèle de fonction)