std::basic_istream<CharT,Traits>:: operator>>
|
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.
-
Si
lval
<
std::
numeric_limits
<
short
>
::
min
(
)
, positionne le
failbitet stocke std:: numeric_limits < short > :: min ( ) dans val . -
Sinon, si
std::
numeric_limits
<
short
>
::
max
(
)
<
lval
, positionne le
failbitet stocke std:: numeric_limits < short > :: max ( ) dans val . - Sinon, stocke static_cast < short > ( lval ) dans val .
-
Si
lval
<
std::
numeric_limits
<
int
>
::
min
(
)
, positionne le
failbitet stocke std:: numeric_limits < int > :: min ( ) dans val . -
Sinon, si
std::
numeric_limits
<
int
>
::
max
(
)
<
lval
, positionne le
failbitet stocke std:: numeric_limits < int > :: max ( ) dans val . - Sinon, stocke static_cast < int > ( lval ) dans val .
FP
comme suit :
-
Si le
rang de conversion à virgule flottante
de
/* extended-floating-point-type */
est inférieur ou égal à celui de
float
, alors
FPest float . -
Sinon, si le rang de conversion à virgule flottante de
/* extended-floating-point-type */
est inférieur ou égal à celui de
double
, alors
FPest double . -
Sinon,
FPest long double .
FP
fval
en appelant
std::num_get::get()
. Après cela :
-
Si
fval
<
-
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
, positionne
failbitet stocke - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) dans val . -
Sinon, si
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
<
fval
, positionne
failbitet stocke std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) dans val . - Sinon, stocke static_cast < /* extended-floating-point-type */ > ( fval ) dans val .
-
- 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
failbitest activé dansexceptions()).
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
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) |
|
|
(C++11)
|
effectue l'entrée et la sortie de flux sur un moteur de nombres pseudo-aléatoires
(modèle de fonction) |
|
(C++11)
|
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) |