Namespaces
Variants

operator>> (std::basic_istream)

From cppreference.net
Défini dans l'en-tête <istream>
template < class CharT, class Traits >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT & ch ) ;

template < class Traits >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char & ch ) ;

template < class Traits >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char & ch ) ;
(1)
(2)
template < class CharT, class Traits >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT * s ) ;

template < class Traits >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char * s ) ;

template < class Traits >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char * s ) ;
(jusqu'au C++20)
template < class CharT, class Traits, std:: size_t N >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT ( & s ) [ N ] ) ;

template < class Traits, std:: size_t N >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char ( & s ) [ N ] ) ;

template < class Traits, std:: size_t N >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char ( & s ) [ N ] ) ;
(depuis C++20)
template < class Istream, class T >

Istream &&

operator >> ( Istream && st, T && value ) ;
(3) (depuis C++11)
1,2) Effectue des opérations de saisie de caractères.
1) Se comporte comme une FormattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs initiaux, extrait un caractère et le stocke dans ch . Si aucun caractère n'est disponible, positionne le failbit (en plus du eofbit qui est positionné comme requis pour une FormattedInputFunction ).
2) Se comporte comme une FormattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs initiaux, extrait des caractères successifs et les stocke à des emplacements successifs de un tableau de caractères dont le premier élément est pointé par (jusqu'à C++20) s . L'extraction s'arrête si l'une des conditions suivantes est remplie :
  • Un caractère d'espacement (déterminé par la facette ctype<CharT> ) est trouvé. Le caractère d'espacement n'est pas extrait.
  • Si st. width ( ) est supérieur à zéro, st. width ( ) - 1 caractères sont stockés.
(jusqu'à C++20)
  • n - 1 caractères sont stockés, où n est défini comme suit :
(depuis C++20)
  • La fin de fichier se produit dans la séquence d'entrée (ce qui définit également eofbit ).
Dans les deux cas, une valeur de caractère nul supplémentaire CharT ( ) est stockée à la fin de la sortie. Si aucun caractère n'a été extrait, définit failbit (le caractère nul est toujours écrit, à la première position de la sortie). Enfin, appelle st. width ( 0 ) pour annuler les effets de std::setw , le cas échéant.
3) Appelle l'opérateur d'extraction approprié, étant donné une référence rvalue à un objet flux d'entrée (équivalent à st >> std:: forward < T > ( value ) ). Cette surcharge participe à la résolution de surcharge seulement si st >> std:: forward < T > ( value ) est bien formé et Istream est un type classe publiquement et sans ambiguïté dérivé de std::ios_base .

Table des matières

Notes

L'extraction d'un seul caractère qui est le dernier caractère du flux ne définit pas eofbit : ceci diffère des autres fonctions d'entrée formatées, telles que l'extraction du dernier entier avec operator >> , mais ce comportement correspond au comportement de std::scanf avec "%c" comme spécificateur de format.

Paramètres

st - flux d'entrée depuis lequel extraire les données
ch - référence vers un caractère pour stocker le caractère extrait
s - pointeur vers (jusqu'à C++20) un tableau de caractères pour stocker les caractères extraits

Valeur de retour

1,2) st
3) std :: move ( st )

Exemple

#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
    std::string input = "n greetings";
    std::istringstream stream(input);
    char c;
    const int MAX = 6;
    char cstr[MAX];
    stream >> c >> std::setw(MAX) >> cstr;
    std::cout << "c = " << c << '\n'
              << "cstr = " << cstr << '\n';
    double f;
    std::istringstream("1.23") >> f; // rvalue stream extraction
    std::cout << "f = " << f << '\n';
}

Sortie :

c = n
cstr = greet
f = 1.23

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 Appliqué à Comportement publié Comportement corrigé
LWG 13 C++98 la définition de n mentionnait un nom inexistant eos remplacé par CharT ( )
LWG 68 C++98 aucun caractère nul n'était stocké à la fin de la sortie pour la surcharge (2) stocke un caractère nul
LWG 1203 C++98 la surcharge pour le flux rvalue retournait une référence lvalue vers la classe de base retourne une référence rvalue
vers la classe dérivée
LWG 2328 C++98 la surcharge pour le flux rvalue nécessitait qu'un autre argument soit une lvalue modifiée pour accepter les rvalue
LWG 2534 C++98 la surcharge pour le flux rvalue n'était pas contrainte contrainte

Voir aussi

extrait des données formatées
(fonction membre publique)