std::basic_istream<CharT,Traits>:: operator>>
|
basic_istream
&
operator
>>
(
unsigned
short
&
value
)
;
|
(1) | |
|
basic_istream
&
operator
>>
(
unsigned
int
&
value
)
;
|
(2) | |
|
basic_istream
&
operator
>>
(
long
&
value
)
;
|
(3) | |
|
basic_istream
&
operator
>>
(
unsigned
long
&
value
)
;
|
(4) | |
|
basic_istream
&
operator
>>
(
long
long
&
value
)
;
|
(5) | (seit C++11) |
|
basic_istream
&
operator
>>
(
unsigned
long
long
&
value
)
;
|
(6) | (seit C++11) |
|
basic_istream
&
operator
>>
(
float
&
value
)
;
|
(7) | |
|
basic_istream
&
operator
>>
(
double
&
value
)
;
|
(8) | |
|
basic_istream
&
operator
>>
(
long
double
&
value
)
;
|
(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) | (seit 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) | |
Extrahiert Werte aus einem Eingabestream.
-
Wenn
lval
<
std::
numeric_limits
<
short
>
::
min
(
)
, setzt es
failbitund speichert std:: numeric_limits < short > :: min ( ) in val . -
Andernfalls, wenn
std::
numeric_limits
<
short
>
::
max
(
)
<
lval
, setzt es
failbitund speichert std:: numeric_limits < short > :: max ( ) in val . - Andernfalls speichert es static_cast < short > ( lval ) in val .
-
Wenn
lval
<
std::
numeric_limits
<
int
>
::
min
(
)
, setzt es
failbitund speichert std:: numeric_limits < int > :: min ( ) in val . -
Andernfalls, wenn
std::
numeric_limits
<
int
>
::
max
(
)
<
lval
, setzt es
failbitund speichert std:: numeric_limits < int > :: max ( ) in val . - Andernfalls speichert es static_cast < int > ( lval ) in val .
FP
wie folgt:
-
Wenn der
Gleitkomma-Konvertierungsrang
von
/* extended-floating-point-type */
kleiner oder gleich dem von
float
ist, dann ist
FPfloat . -
Andernfalls, wenn der Gleitkomma-Konvertierungsrang von
/* extended-floating-point-type */
kleiner oder gleich dem von
double
ist, dann ist
FPdouble . -
Andernfalls ist
FPlong double .
FP
-Wert
fval
durch Aufruf von
std::num_get::get()
. Danach:
-
Wenn
fval
<
-
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
, setzt es
failbitund speichert - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) in val . -
Andernfalls, wenn
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
<
fval
, setzt es
failbitund speichert std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) in val . - Andernfalls speichert es static_cast < /* extended-floating-point-type */ > ( fval ) in val .
-
- Ende-der-Datei (EOF) tritt in der Eingabesequenz auf;
- das Einfügen in die Ausgabesequenz fehlschlägt (in diesem Fall wird das einzufügende Zeichen nicht extrahiert);
-
eine Exception auftritt (in diesem Fall wird die Exception abgefangen und nur erneut ausgelöst, wenn keine Zeichen eingefügt wurden und
failbitinexceptions()aktiviert ist).
Wenn die Extraktion fehlschlägt (z.B. wenn ein Buchstabe eingegeben wurde, wo eine Ziffer erwartet wird), wird Null in
value
geschrieben und
failbit
gesetzt. Für vorzeichenbehaftete Ganzzahlen wird, wenn die Extraktion zu einem Wert führt, der zu groß oder zu klein ist, um in
value
zu passen,
std::
numeric_limits
<
T
>
::
max
(
)
oder
std::
numeric_limits
<
T
>
::
min
(
)
(jeweils) geschrieben und das
failbit
Flag gesetzt. Für vorzeichenlose Ganzzahlen wird, wenn die Extraktion zu einem Wert führt, der zu groß oder zu klein ist, um in
value
zu passen,
std::
numeric_limits
<
T
>
::
max
(
)
geschrieben und das
failbit
Flag gesetzt.
Inhaltsverzeichnis |
Parameter
| value | - | Referenz auf einen Integer- oder Gleitkommawert, in dem der extrahierte Wert gespeichert wird |
| func | - | Zeiger auf eine I/O-Manipulator-Funktion |
| sb | - | Zeiger auf den Streampuffer, in den alle Daten geschrieben werden |
Rückgabewert
Hinweise
Für Überladung ( 14 ) , wenn der erweiterte Gleitkommatyp einen Gleitkomma-Konvertierungsrang hat, der nicht dem Rang eines beliebigen Standard-Gleitkommatyps entspricht, dann kann doppelte Rundung während der Konvertierung zu ungenauen Ergebnissen führen. std::from_chars() kann in Situationen verwendet werden, in denen maximale Genauigkeit wichtig ist.
Beispiel
#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'; }
Ausgabe:
n = 41 f = 3.14 b = false hello world
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 64 | C++98 |
es war unklar, ob Überladung
(18)
nur die
std::ios_base::failure erneut werfen kann, die durch Aufruf von setstate ( failbit ) geworfen wurde |
alle abgefangenen Exceptions
können erneut geworfen werden |
| LWG 118 | C++98 |
Überladung
(12,13)
delegierte die Extraktion an
num_get::get
,
aber es gibt keine Überladungen für short und int |
ein
long
Wert wird extrahiert
anstelle von short oder int |
| LWG 413 | C++98 |
Überladung
(18)
warf nur Exceptions erneut, die beim Extrahieren
von Zeichen aus sb geworfen wurden, aber Zeichen werden aus * this extrahiert |
korrigiert von sb zu * this |
| LWG 567 | C++98 |
Überladung
(18)
verhielt sich wie eine
FormattedInputFunction
aufgrund der Lösung von LWG issue 60 |
sie verhält sich wie eine
UnformattedInputFunction |
| LWG 661 | C++98 |
Überladungen
(12,13)
speicherten die extrahierte Zahl nicht
in value aufgrund der Lösung von LWG issue 118 |
speichert die Zahl, wenn
kein Überlauf auftritt |
| LWG 696 | C++98 | value blieb bei Extraktionsfehlern unverändert |
auf Null oder Minimal-/
Maximalwerte gesetzt |
Siehe auch
|
extrahiert Zeichen und Zeichenarrays
(Funktions-Template) |
|
|
führt Stream-Eingabe und -Ausgabe für Strings durch
(Funktions-Template) |
|
|
führt Stream-Eingabe und -Ausgabe für Bitsets durch
(Funktions-Template) |
|
|
serialisiert und deserialisiert eine komplexe Zahl
(Funktions-Template) |
|
|
(C++11)
|
führt Stream-Eingabe und -Ausgabe für Pseudozufallszahlengeneratoren durch
(Funktions-Template) |
|
(C++11)
|
führt Stream-Eingabe und -Ausgabe für Pseudozufallszahlenverteilungen durch
(Funktions-Template) |
|
extrahiert Zeichenblöcke
(öffentliche Elementfunktion) |
|
|
extrahiert bereits verfügbare Zeichenblöcke
(öffentliche Elementfunktion) |
|
|
extrahiert Zeichen
(öffentliche Elementfunktion) |
|
|
extrahiert Zeichen bis zum angegebenen Zeichen
(öffentliche Elementfunktion) |
|
|
(C++17)
|
konvertiert eine Zeichenfolge in einen Integer- oder Gleitkommawert
(Funktion) |