Namespaces
Variants

std::basic_istream<CharT,Traits>:: operator>>

From cppreference.net
basic_istream & operator >> ( unsigned short & valeur ) ;
(1)
basic_istream & operator >> ( unsigned int & valeur ) ;
(2)
basic_istream & operator >> ( long & value ) ;
(3)
basic_istream & operator >> ( unsigned long & value ) ;
(4)
basic_istream & operator >> ( long long & value ) ;
(5) (depuis C++11)
basic_istream & operator >> ( unsigned long long & value ) ;
(6) (depuis C++11)
basic_istream & operator >> ( float & value ) ;
(7)
basic_istream & operator >> ( double & value ) ;
(8)
basic_istream & operator >> ( long double & valeur ) ;
(9)
basic_istream & operator >> ( bool & value ) ;
(10)
basic_istream & operator >> ( void * & value ) ;
(11)
basic_istream & operator >> ( short & value ) ;
(12)
basic_istream & operator >> ( int & value ) ;
(13)
basic_istream & operator >> ( /* extended-floating-point-type */ & value ) ;
(14) (depuis C++23)
basic_istream & operator >> ( std:: ios_base & ( * func ) ( std:: ios_base & ) ) ;
(15)
basic_istream & operator >> ( std:: basic_ios < CharT, Traits > &
( * func ) ( std:: basic_ios < CharT, Traits > & ) ) ;
(16)
basic_istream & operator >> ( basic_istream & ( * func ) ( basic_istream & ) ) ;
(17)
basic_istream & operator >> ( std:: basic_streambuf < CharT, Traits > * sb ) ;
(18)

Extrait des valeurs d'un flux d'entrée.

1-11) Extrait une valeur en ignorant potentiellement les espaces blancs précédents. La valeur est stockée dans une référence donnée value .
Cette fonction se comporte comme une FormattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs initiaux, extrait une valeur en appelant std::num_get::get() .
12) Extrait une valeur short en ignorant potentiellement les espaces blancs précédents. La valeur est stockée dans une référence value donnée.
Cette fonction se comporte comme une FormattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs de début, extrait une valeur long lval en appelant std::num_get::get() . Ensuite :
13) Extrait une valeur int en ignorant potentiellement les espaces blancs précédents. La valeur est stockée dans une référence value donnée.
Cette fonction se comporte comme une FormattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs initiaux, extrait une valeur long lval en appelant std::num_get::get() . Ensuite :
14) Extrait une valeur en virgule flottante étendue en ignorant potentiellement les espaces blancs précédents. La valeur est stockée dans une référence donnée value . La bibliothèque fournit des surcharges pour tous les types en virgule flottante étendus non qualifiés cv comme type référencé du paramètre value .
Détermine le type à virgule flottante standard FP comme suit :
  • Si le rang de conversion à virgule flottante de /* extended-floating-point-type */ est inférieur ou égal à celui de float , alors FP est float .
  • Sinon, si le rang de conversion à virgule flottante de /* extended-floating-point-type */ est inférieur ou égal à celui de double , alors FP est double .
  • Sinon, FP est long double .
Cette fonction se comporte comme une FormattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs de début, extrait une valeur FP fval en appelant std::num_get::get() . Après cela :
  • Si fval < - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) , positionne failbit et stocke - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) dans val .
  • Sinon, si std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) < fval , positionne failbit et stocke std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) dans val .
  • Sinon, stocke static_cast < /* extended-floating-point-type */ > ( fval ) dans val .
15-17) Appelle func ( * this ) , où func est un manipulateur d'E/S.
18) Se comporte comme une UnformattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, extrait toutes les données de * this et les stocke dans sb . L'extraction s'arrête si l'une des conditions suivantes est remplie :
  • une fin de fichier survient dans la séquence d'entrée ;
  • l'insertion dans la séquence de sortie échoue (auquel cas le caractère à insérer n'est pas extrait) ;
  • une exception se produit (auquel cas l'exception est interceptée, et seulement renvoyée si aucun caractère n'a été inséré et que failbit est activé dans exceptions() ).
Dans tous les cas, stocke le nombre de caractères extraits dans la variable membre accessible par les appels ultérieurs à gcount() . Si sb est un pointeur nul ou si aucun caractère n'a été inséré dans sb , appelle setstate ( failbit ) (ce qui peut lever std::ios_base::failure si activé).

Si l'extraction échoue (par exemple, si une lettre est entrée là où un chiffre est attendu), zéro est écrit dans value et failbit est positionné. Pour les entiers signés, si l'extraction aboutit à une valeur trop grande ou trop petite pour tenir dans value , std:: numeric_limits < T > :: max ( ) ou std:: numeric_limits < T > :: min ( ) (respectivement) est écrit et le drapeau failbit est positionné. Pour les entiers non signés, si l'extraction aboutit à une valeur trop grande ou trop petite pour tenir dans value , std:: numeric_limits < T > :: max ( ) est écrit et le drapeau failbit est positionné.

Table des matières

Paramètres

value - référence à une valeur entière ou à virgule flottante pour stocker la valeur extraite
func - pointeur vers une fonction de manipulateur d'E/S
sb - pointeur vers le tampon de flux pour écrire toutes les données

Valeur de retour

1-16,18) * this
17) func ( * this )

Notes

Pour la surcharge ( 14 ) , lorsque le type à virgule flottante étendu a un rang de conversion en virgule flottante qui n'est égal au rang d'aucun type standard à virgule flottante, alors l'arrondi double lors de la conversion peut entraîner des résultats inexacts. std::from_chars() peut être utilisé dans les situations où une précision maximale est importante.

Exemple

#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
    std::string input = "41 3.14 false hello world";
    std::istringstream stream(input);
    int n;
    double f;
    bool b;
    stream >> n >> f >> std::boolalpha >> b;
    std::cout << "n = " << n << '\n'
              << "f = " << f << '\n'
              << "b = " << std::boolalpha << b << '\n';
    // extract the rest using the streambuf overload
    stream >> std::cout.rdbuf();
    std::cout << '\n';
}

Sortie :

n = 41
f = 3.14
b = false
hello world

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 64 C++98 il n'était pas clair si la surcharge (18) ne pouvait que relancer
std::ios_base::failure levée en appelant setstate ( failbit )
toutes les exceptions interceptées
peuvent être relancées
LWG 118 C++98 les surcharges (12,13) déléguaient l'extraction à num_get::get ,
mais il n'a pas de surcharges pour short et int
une valeur long est extraite
au lieu de short ou int
LWG 413 C++98 la surcharge (18) ne relançait que les exceptions levées lors de l'extraction
de caractères de sb , mais les caractères sont extraits de * this
corrigé sb en * this
LWG 567 C++98 la surcharge (18) se comportait comme une FormattedInputFunction
en raison de la résolution de LWG issue 60
elle se comporte comme une
UnformattedInputFunction
LWG 661 C++98 les surcharges (12,13) ne stockaient pas le nombre extrait
dans value en raison de la résolution de LWG issue 118
stocke le nombre si
aucun dépassement ne se produit
LWG 696 C++98 value restait inchangé en cas d'échec d'extraction défini à zéro ou aux valeurs
minimales/maximales

Voir aussi

extrait des caractères et des tableaux de caractères
(modèle de fonction)
effectue l'entrée et la sortie de flux sur les chaînes
(modèle de fonction)
effectue l'entrée et la sortie de flux des bitsets
(modèle de fonction)
sérialise et désérialise un nombre complexe
(modèle de fonction)
effectue l'entrée et la sortie de flux sur un moteur de nombres pseudo-aléatoires
(modèle de fonction)
effectue l'entrée et la sortie de flux sur une distribution de nombres pseudo-aléatoires
(modèle de fonction)
extrait des blocs de caractères
(fonction membre publique)
extrait des blocs de caractères déjà disponibles
(fonction membre publique)
extrait des caractères
(fonction membre publique)
extrait des caractères jusqu'à trouver le caractère donné
(fonction membre publique)
(C++17)
convertit une séquence de caractères en une valeur entière ou à virgule flottante
(fonction)