Namespaces
Variants

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

From cppreference.net
int_type get ( ) ;
(1)
basic_istream & get ( char_type & ch ) ;
(2)
basic_istream & get ( char_type * s, std:: streamsize count ) ;
(3)
basic_istream & get ( char_type * s, std:: streamsize count, char_type delim ) ;
(4)
basic_istream & get ( basic_streambuf & strbuf ) ;
(5)
basic_istream & get ( basic_streambuf & strbuf, char_type delim ) ;
(6)
**Hinweis:** Da der gesamte Text innerhalb der ` ` Tags C++-Code ist und gemäß den Anweisungen nicht übersetzt werden darf, sowie die HTML-Struktur und Attribute unverändert bleiben müssen, besteht die deutsche Übersetzung lediglich aus dieser erklärenden Anmerkung. Der eigentliche Tabelleninhalt bleibt unverändert.

Extrahiert Zeichen oder Zeichenfolgen aus dem Stream.

Alle Versionen verhalten sich als UnformattedInputFunction s . Nach dem Konstruieren und Überprüfen des Sentry-Objekts führen diese Funktionen Folgendes aus:

1) Liest ein Zeichen und gibt es zurück, falls verfügbar. Andernfalls gibt es Traits :: eof ( ) zurück und setzt failbit und eofbit .
2) Liest ein Zeichen und speichert es in ch , falls verfügbar. Andernfalls lässt es ch unverändert und setzt failbit und eofbit . Beachten Sie, dass diese Funktion - anders als der formatierte Zeicheneingabeoperator >> - nicht für die Typen signed char und unsigned char überladen ist.
3) Gleich wie get ( s, count, widen ( ' \n ' ) ) , das heißt, liest höchstens std:: max ( 0 , count - 1 ) Zeichen und speichert sie in der Zeichenkette, auf die s zeigt, bis ' \n ' gefunden wird.
4) Liest Zeichen und speichert sie in den aufeinanderfolgenden Speicherstellen des Zeichenarrays, dessen erstes Element durch s gezeigt wird. Zeichen werden extrahiert und gespeichert, bis eines der folgenden Ereignisse eintritt:
  • count kleiner als 1 ist oder count - 1 Zeichen gespeichert wurden.
  • Eine End-of-File-Bedingung in der Eingabesequenz auftritt ( setstate ( eofbit ) wird aufgerufen).
  • Das nächste verfügbare Eingabezeichen c gleich delim ist, wie durch Traits :: eq ( c, delim ) bestimmt. Dieses Zeichen wird nicht extrahiert (im Gegensatz zu getline() ).
In jedem Fall, wenn count > 0 , wird ein Nullzeichen ( CharT ( ) ) an der nächsten aufeinanderfolgenden Position des Arrays gespeichert.
5) Gleich wie get ( strbuf, widen ( ' \n ' ) ) , das heißt, liest verfügbare Zeichen und fügt sie in das gegebene basic_streambuf -Objekt ein, bis ' \n ' gefunden wird.
6) Liest Zeichen und fügt sie in die Ausgabesequenz ein, die durch das gegebene basic_streambuf Objekt gesteuert wird. Zeichen werden extrahiert und in strbuf eingefügt, bis eines der folgenden Ereignisse eintritt:
  • Ein End-of-File-Zustand tritt in der Eingabesequenz auf.
  • Das Einfügen in die Ausgabesequenz schlägt fehl (in diesem Fall wird das Zeichen, das nicht eingefügt werden konnte, nicht extrahiert).
  • Das nächste verfügbare Eingabezeichen c gleich delim ist, wie durch Traits :: eq ( c, delim ) bestimmt. Dieses Zeichen wird nicht extrahiert.
  • Eine Ausnahme auftritt (in diesem Fall wird die Ausnahme abgefangen und nicht erneut ausgelöst).

Wenn keine Zeichen extrahiert wurden, ruft setstate ( failbit ) auf.

Alle Versionen setzen den Wert von gcount() auf die Anzahl der extrahierten Zeichen.

Inhaltsverzeichnis

Parameter

ch - Referenz auf das Zeichen, in das das Ergebnis geschrieben wird
s - Zeiger auf die Zeichenkette, in der die Zeichen gespeichert werden
count - Größe der Zeichenkette, auf die s zeigt
delim - Begrenzungszeichen, bei dem die Extraktion stoppt. Es wird nicht extrahiert und nicht gespeichert
strbuf - Streampuffer, in den der Inhalt gelesen wird

Rückgabewert

1) Das extrahierte Zeichen oder Traits :: eof ( ) .
2-6) * this

Exceptions

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Wenn eine interne Operation eine Ausnahme auslöst, wird diese abgefangen und badbit wird gesetzt. Wenn exceptions() für badbit gesetzt ist, wird die Ausnahme erneut ausgelöst.

Beispiel

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream s1("Hello, world.");
    char c1 = s1.get(); // liest 'H'
    std::cout << "after reading " << c1 << ", gcount() == " <<  s1.gcount() << '\n';
    char c2;
    s1.get(c2);         // liest 'e'
    char str[5];
    s1.get(str, 5);     // liest "llo,"
    std::cout << "after reading " << str << ", gcount() == " <<  s1.gcount() << '\n';
    std::cout << c1 << c2 << str;
    s1.get(*std::cout.rdbuf()); // liest den Rest, ohne '\n'
    std::cout << "\nAfter the last get(), gcount() == " << s1.gcount() << '\n';
}

Ausgabe:

after reading H, gcount() == 1
after reading llo,, gcount() == 4
Hello, world.
After the last get(), gcount() == 7

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 370 C++98 die Wirkung der Überladung (5) war get ( s, count, widen ( ' \n ' ) ) ,
was der Wirkung der Überladung (3) entspricht
korrigiert zu
get ( strbuf, widen ( ' \n ' ) )
LWG 531 C++98 Überladungen (3,4) konnten den Fall nicht
behandeln, in dem count nicht-positiv ist
in diesem Fall wird kein
Zeichen extrahiert

Siehe auch

extrahiert Blöcke von Zeichen
(öffentliche Elementfunktion)
extrahiert formatierte Daten
(öffentliche Elementfunktion)
extrahiert Zeichen und Zeichenarrays
(Funktionstemplate)