Namespaces
Variants

operator>>(std::basic_istream)

De fr.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)
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 );
(2) (jusqu'à 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 d'entrée de caractères.
1) Se comporte comme un 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 failbit (en plus de eofbit qui est positionné comme requis par une FormattedInputFunction).
2) Se comporte comme un 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 (tel que 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 :
  • Si st.width() est supérieur à zéro, std::min(std::size_t(st.width()), N);
  • sinon, n est N.
(depuis C++20)
  • La fin du fichier se produit dans la séquence d'entrée (cela positionne é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, positionne failbit (le caractère nul est quand même écrit, à la première position dans 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 vers un objet flux d'entrée (équivalent à st >> std::forward<T>(value)). Cette surcharge participe à la résolution de surcharge uniquement si st >> std::forward<T>(value) est bien formé et Istream est un type de classe dérivé publiquement et sans ambiguïté de std::ios_base.

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)