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 Eingabestrom.
- Wenn lval < std::numeric_limits<short>::min(), wird `failbit` gesetzt und std::numeric_limits<short>::min() in val gespeichert.
- Andernfalls, wenn std::numeric_limits<short>::max() < lval, wird `failbit` gesetzt und std::numeric_limits<short>::max() in val gespeichert.
- Andernfalls wird static_cast<short>(lval) in val gespeichert.
- Wenn lval < std::numeric_limits<int>::min(), wird `failbit` gesetzt und std::numeric_limits<int>::min() in val gespeichert.
- Andernfalls, wenn std::numeric_limits<int>::max() < lval, wird `failbit` gesetzt und std::numeric_limits<int>::max() in val gespeichert.
- Andernfalls wird static_cast<int>(lval) in val gespeichert.
- Wenn der Rang der Gleitkomma-Konvertierung von /* extended-floating-point-type */ kleiner oder gleich dem von float ist, dann ist `FP` float.
- Andernfalls, wenn der Rang der Gleitkomma-Konvertierung von /* extended-floating-point-type */ kleiner oder gleich dem von double ist, dann ist `FP` double.
- Andernfalls ist `FP` long double.
- Wenn fval < -std::numeric_limits</* extended-floating-point-type */>::max(), wird `failbit` gesetzt und -std::numeric_limits</* extended-floating-point-type */>::max() in val gespeichert.
- Andernfalls, wenn std::numeric_limits</* extended-floating-point-type */>::max() < fval, wird `failbit` gesetzt und std::numeric_limits</* extended-floating-point-type */>::max() in val gespeichert.
- Andernfalls wird static_cast</* extended-floating-point-type */>(fval) in val gespeichert.
- Das Dateiende wird in der Eingabesequenz erreicht;
- Das Einfügen in die Ausgabesequenz schlägt fehl (in diesem Fall wird das einzufügende Zeichen nicht extrahiert);
- Eine Ausnahme tritt auf (in diesem Fall wird die Ausnahme abgefangen und nur neu ausgelöst, wenn sie keine Zeichen eingefügt hat und `failbit` in `exceptions()` aktiviert ist).
Wenn die Extraktion fehlschlägt (z. B. wenn eine Buchstabe eingegeben wurde, wo eine Ziffer erwartet wurde), wird Null in value geschrieben und `failbit` gesetzt. Für vorzeichenbehaftete Ganzzahlen, wenn die Extraktion dazu führt, dass der Wert zu groß oder zu klein ist, um in value zu passen, werden std::numeric_limits<T>::max() oder std::numeric_limits<T>::min() (bzw.) geschrieben und das Flag `failbit` gesetzt. Für vorzeichenlose Ganzzahlen, wenn die Extraktion dazu führt, dass der Wert zu groß oder zu klein ist, um in value zu passen, wird std::numeric_limits<T>::max() geschrieben und das Flag `failbit` gesetzt.
Inhalt |
[edit] Parameter
| value | - | Referenz auf einen Ganzzahl- oder Gleitkommawert, in den der extrahierte Wert gespeichert werden soll |
| func | - | Zeiger auf eine I/O-Manipulatorfunktion |
| sb | - | Zeiger auf den Strompuffer, in den alle Daten geschrieben werden sollen |
[edit] Rückgabewert
[edit] Hinweise
Für die Überladung (14) kann es bei der Konvertierung aufgrund der doppelten Rundung zu ungenauen Ergebnissen kommen, wenn der erweiterte Gleitkommatyp einen Gleitkomma-Konvertierungsrang aufweist, der nicht dem Rang eines Standard-Gleitkommatyps entspricht. std::from_chars() kann in Situationen verwendet werden, in denen maximale Genauigkeit wichtig ist.
[edit] 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
[edit] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 64 | C++98 | war unklar, ob Überladung (18) nur die neu auslösen kann std::ios_base::failure, die beim Aufrufen von setstate(failbit) ausgelöst wird |
alle abgefangenen Ausnahmen neu ausgelöst werden können |
| 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 anstatt short oder int |
| LWG 413 | C++98 | Überladung (18) löste nur Ausnahmen neu aus, die beim Extrahieren ausgelöst wurden Zeichen aus sb, aber Zeichen werden aus *this extrahiert |
korrigiert sb zu *this |
| LWG 567 | C++98 | Überladung (18) verhielt sich wie eine FormattedInputFunction verhielt sich als |
es verhält sich wie ein UnformattedInputFunction |
| LWG 661 | C++98 | Überladungen (12,13) speicherten die extrahierte Zahl nicht in value aufgrund der Auflösung von LWG Issue 118 |
speichert die Zahl, wenn kein Überlauf auftritt |
| LWG 696 | C++98 | value wurde bei Extraktionsfehlern unverändert | auf Null oder Minimum/ Maximumswerte gesetzt |
[edit] Siehe auch
| extrahiert Zeichen und Zeichen-Arrays (function template) | |
| führt Stream-Ein- und -Ausgabe auf Strings durch (function template) | |
| führt Stream-Ein- und -Ausgabe von Bitsets durch (function template) | |
| serialisiert und deserialisiert eine komplexe Zahl (function template) | |
| (C++11) |
führt Stream-Ein- und -Ausgabe auf Pseudo-Zufallszahlengeneratoren durch (function template) |
| (C++11) |
führt Stream-Ein- und -Ausgabe auf Pseudo-Zufallszahlendistributionen durch (function template) |
| extrahiert Zeichenblöcke (public member function) | |
| extrahiert bereits verfügbare Zeichenblöcke (public member function) | |
| extrahiert Zeichen (public member function) | |
| extrahiert Zeichen, bis das gegebene Zeichen gefunden wird (public member function) | |
| (C++17) |
konvertiert eine Zeichensequenz in einen Ganzzahl- oder Gleitkommawert (Funktion) |