Namespaces
Variants

operator>> (std::basic_istream)

From cppreference.net
Definiert in Header <istream>
template < class CharT, class Traits >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT & ch ) ;

template < class Traits >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char & ch ) ;

template < class Traits >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char & ch ) ;
(1)
(2)
template < class CharT, class Traits >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT * s ) ;

template < class Traits >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char * s ) ;

template < class Traits >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char * s ) ;
(bis C++20)
template < class CharT, class Traits, std:: size_t N >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT ( & s ) [ N ] ) ;

template < class Traits, std:: size_t N >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char ( & s ) [ N ] ) ;

template < class Traits, std:: size_t N >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char ( & s ) [ N ] ) ;
(seit C++20)
template < class Istream, class T >

Istream &&

operator >> ( Istream && st, T && value ) ;
(3) (seit C++11)
1,2) Führt Zeicheneingabeoperationen durch.
1) Verhält sich wie eine FormattedInputFunction . Nach dem Konstruieren und Prüfen des Sentry-Objekts, das führende Leerzeichen überspringen kann, extrahiert es ein Zeichen und speichert es in ch . Falls kein Zeichen verfügbar ist, setzt es failbit (zusätzlich zu eofbit , das wie für eine FormattedInputFunction erforderlich gesetzt wird).
2) Verhält sich wie eine FormattedInputFunction . Nach dem Konstruieren und Prüfen des Sentry-Objekts, das führende Leerzeichen überspringen kann, extrahiert es aufeinanderfolgende Zeichen und speichert sie an aufeinanderfolgenden Positionen von einem Zeichenarray, dessen erstes Element durch (bis C++20) s gezeigt wird. Die Extraktion stoppt, wenn eine der folgenden Bedingungen erfüllt ist:
  • Ein Leerzeichenzeichen (bestimmt durch die ctype<CharT> Facette) gefunden wird. Das Leerzeichenzeichen wird nicht extrahiert.
  • Wenn st. width ( ) größer als Null ist, werden st. width ( ) - 1 Zeichen gespeichert.
(bis C++20)
  • n - 1 Zeichen werden gespeichert, wobei n wie folgt definiert ist:
(seit C++20)
  • Das Ende der Datei in der Eingabesequenz auftritt (dies setzt auch eofbit ).
In beiden Fällen wird ein zusätzlicher Nullzeichenwert CharT ( ) am Ende der Ausgabe gespeichert. Wenn keine Zeichen extrahiert wurden, wird failbit gesetzt (das Nullzeichen wird dennoch in die erste Position der Ausgabe geschrieben). Schließlich wird st. width ( 0 ) aufgerufen, um die Effekte von std::setw , falls vorhanden, aufzuheben.
3) Ruft den entsprechenden Extraktionsoperator auf, gegeben einen Rvalue-Referenz auf ein Eingabestrom-Objekt (entspricht st >> std:: forward < T > ( value ) ). Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn st >> std:: forward < T > ( value ) wohlgeformt ist und Istream ein Klassentyp ist, der öffentlich und eindeutig von std::ios_base abgeleitet ist.

Inhaltsverzeichnis

Hinweise

Das Extrahieren eines einzelnen Zeichens, das das letzte Zeichen des Streams ist, setzt nicht eofbit : Dies unterscheidet sich von anderen formatierten Eingabefunktionen, wie dem Extrahieren der letzten Ganzzahl mit operator >> , aber dieses Verhalten entspricht dem Verhalten von std::scanf mit "%c" Format-Spezifizierer.

Parameter

st - Eingabestrom, aus dem die Daten extrahiert werden
ch - Referenz auf ein Zeichen, in dem das extrahierte Zeichen gespeichert wird
s - Zeiger auf (bis C++20) ein Zeichenarray, in dem die extrahierten Zeichen gespeichert werden

Rückgabewert

1,2) st
3) std :: move ( st )

Beispiel

#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
    std::string input = "n greetings";
    std::istringstream stream(input);
    char c;
    const int MAX = 6;
    char cstr[MAX];
    stream >> c >> std::setw(MAX) >> cstr;
    std::cout << "c = " << c << '\n'
              << "cstr = " << cstr << '\n';
    double f;
    std::istringstream("1.23") >> f; // rvalue stream extraction
    std::cout << "f = " << f << '\n';
}

Ausgabe:

c = n
cstr = greet
f = 1.23

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 13 C++98 die Definition von n erwähnte einen nicht existierenden Namen eos ersetzt durch CharT ( )
LWG 68 C++98 für Überladung (2) wurden keine Nullzeichen am Ende der Ausgabe gespeichert speichert ein Nullzeichen
LWG 1203 C++98 Überladung für Rvalue-Stream gab Lvalue-Referenz auf die Basisklasse zurück gibt Rvalue-Referenz
auf die abgeleitete Klasse zurück
LWG 2328 C++98 Überladung für Rvalue-Stream erforderte, dass ein weiteres Argument ein Lvalue ist wurde geändert, um Rvalue zu akzeptieren
LWG 2534 C++98 Überladung für Rvalue-Stream war nicht eingeschränkt eingeschränkt

Siehe auch

extrahiert formatierte Daten
(öffentliche Elementfunktion)