Namespaces
Variants

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

From cppreference.net
(Anmerkung: Der bereitgestellte HTML-Code enthält keinen übersetzbaren Text, da alle Tags leer sind. Die Struktur und Formatierung bleiben unverändert.)
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.

1-11) Extrahiert einen Wert unter möglichem Überspringen vorangehender Leerzeichen. Der Wert wird in eine gegebene Referenz value gespeichert.
Diese Funktion verhält sich wie eine FormattedInputFunction . Nach dem Konstruieren und Prüfen des Sentry-Objekts, welches führende Leerzeichen überspringen kann, extrahiert sie einen Wert durch Aufruf von std::num_get::get() .
12) Extrahiert einen short -Wert unter möglichem Überspringen vorangehender Leerzeichen. Der Wert wird in eine gegebene Referenz value gespeichert.
Diese Funktion verhält sich wie eine FormattedInputFunction . Nach dem Konstruieren und Prüfen des Sentry-Objekts, das führende Leerzeichen überspringen kann, extrahiert sie einen long -Wert lval durch Aufruf von std::num_get::get() . Danach:
13) Extrahiert einen int -Wert unter möglichem Überspringen vorangehender Leerzeichen. Der Wert wird in eine gegebene Referenz value gespeichert.
Diese Funktion verhält sich wie eine FormattedInputFunction . Nach dem Konstruieren und Prüfen des Sentry-Objekts, das führende Leerzeichen überspringen kann, extrahiert sie einen long -Wert lval durch Aufruf von std::num_get::get() . Danach:
14) Extrahiert einen erweiterten Gleitkommawert unter möglichem Überspringen vorangehender Leerzeichen. Der Wert wird in einer gegebenen Referenz value gespeichert. Die Bibliothek bietet Überladungen für alle cv-unqualifizierten extended floating-point types als Referenztyp des Parameters value an.
Bestimmt den Standard-Gleitkommatyp FP wie folgt:
  • Wenn der Gleitkomma-Konvertierungsrang von /* extended-floating-point-type */ kleiner oder gleich dem von float ist, dann ist FP float .
  • Andernfalls, wenn der Gleitkomma-Konvertierungsrang von /* extended-floating-point-type */ kleiner oder gleich dem von double ist, dann ist FP double .
  • Andernfalls ist FP long double .
Diese Funktion verhält sich wie eine FormattedInputFunction . Nach dem Konstruieren und Prüfen des Sentry-Objekts, das führende Leerzeichen überspringen kann, extrahiert sie einen FP -Wert fval durch Aufruf von std::num_get::get() . Danach:
  • Wenn fval < - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) , setzt es failbit und speichert - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) in val .
  • Andernfalls, wenn std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) < fval , setzt es failbit und speichert std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) in val .
  • Andernfalls speichert es static_cast < /* extended-floating-point-type */ > ( fval ) in val .
15-17) Ruft func ( * this ) auf, wobei func ein I/O-Manipulator ist.
18) Verhält sich wie eine UnformattedInputFunction . Nach dem Konstruieren und Prüfen des Sentry-Objekts extrahiert es alle Daten von * this und speichert sie in sb . Die Extraktion wird beendet, wenn eine der folgenden Bedingungen erfüllt ist:
  • 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 failbit in exceptions() aktiviert ist).
In jedem Fall speichert es die Anzahl der extrahierten Zeichen in der Member-Variable, auf die durch nachfolgende Aufrufe von gcount() zugegriffen wird. Wenn sb ein Nullzeiger ist oder wenn keine Zeichen in sb eingefügt wurden, ruft es setstate ( failbit ) auf (was std::ios_base::failure auslösen kann, wenn aktiviert).

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

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

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)
führt Stream-Eingabe und -Ausgabe für Pseudozufallszahlengeneratoren durch
(Funktions-Template)
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)