Freigeben über


GetLine Vorlagenfunktion

Extrahiert Zeichenfolgen zeilenweise aus dem Eingabestream.

// (1) delimiter as parameter template<class CharType, class Traits, class Allocator> basic_istream<CharType, Traits>& getline(     basic_istream<CharType, Traits>& is,     basic_string<CharType, Traits, Allocator>& str, CharType delim);  template<class CharType, class Traits, class Allocator> basic_istream<CharType, Traits>& getline(     basic_istream<CharType, Traits>&& is,     basic_string<CharType, Traits, Allocator>& str, const CharType delim);  // (2) default delimiter used template<class CharType, class Traits, class Allocator> basic_istream<CharType, Traits>& getline(     basic_istream<CharType, Traits>& is,     basic_string<CharType, Traits, Allocator>& str);  template<class Allocator, class Traits, class Allocator> basic_istream<Allocator, Traits>& getline(     basic_istream<Allocator, Traits>&& is,     basic_string<Allocator, Traits, Allocator>& str); 

Parameter

  • is
    Der Eingabestream, aus dem eine Zeichenfolge extrahiert werden soll.

  • str
    Die Zeichenfolge, in die die Zeichen aus dem Eingabestream gelesen werden.

  • delim
    Das Zeilentrennzeichen.

Rückgabewert

Der Eingabestream is.

Hinweise

Das mit (1) markierte Funktionssignaturpaar extrahiert Zeichen aus is bis delim gefunden wird, und speichert die Zeichen in str.

Das mit (2) markierte Funktionssignaturpaar verwendet "newline" als Standard-Zeilentrennzeichen und verhält sich wie getline(is, str, is.widen('\n')).

Die zweite Funktion jedes Paars ist analog zur ersten, um rvalue-Verweise zu unterstützen.

Die Extraktion wird beendet, sobald eines der folgenden Ereignisse eintritt:

  • Das Ende der Datei; in diesem Fall wird das interne Statusflag von is auf ios_base::eofbit festgelegt.

  • Nachdem die Funktion ein Element extrahiert hat, das im Vergleich delim entspricht; in diesem Fall wird das Element weder zurückgestellt noch an die gesteuerte Sequenz angefügt.

  • Nachdem die Funktion str.max_size-Elemente extrahiert hat; in diesem Fall wird das interne Statusflag von is auf ios_base::failbit festgelegt.

  • Ein anderer als einer der oben genannten Fehler; in diesem Fall wird das interne Statusflag von is auf ios_base::badbit festgelegt.

Informationen zu internen Statusflags finden Sie unter ios_base::iostate.

Wenn die Funktion keine Elemente extrahiert, wird das interne Statusflag von is auf ios_base::failbit festgelegt. In jedem Fall gibt getline is zurück.

Wenn eine Ausnahme ausgelöst wird, bleiben is und str in einem gültigen Zustand.

Beispiel

Der folgende Code zeigt getline() in zwei Modi: zuerst mit dem Standardtrennzeichen (newline) und dann mit einem Leerzeichen als Trennzeichen. Mit dem Dateiendezeichen (STRG-Z auf der Tastatur) wird die Beendigung der while-Schleifen gesteuert. Dadurch wird das interne Statusflag von cin auf eofbit festgelegt; dies muss mit basic_ios::clear() gelöscht werden, damit die zweite while-Schleife ordnungsgemäß ausgeführt werden kann.

// compile with: /EHsc /W4
#include <string>
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    string str;
    vector<string> v1;
    cout << "Enter a sentence, press ENTER between sentences. (Ctrl-Z to stop): " << endl;
    // Loop until end-of-file (Ctrl-Z) is input, store each sentence in a vector.
    // Default delimiter is the newline character.
    while (getline(cin, str)) {
        v1.push_back(str);
    }

    cout << "The following input was stored with newline delimiter:" << endl;
    for (const auto& p : v1) {
        cout << p << endl;
    }

    cin.clear();

    vector<string> v2;
    // Now try it with a whitespace delimiter
    while (getline(cin, str, ' ')) {
        v2.push_back(str);
    }

    cout << "The following input was stored with whitespace as delimiter:" << endl;
    for (const auto& p : v2) {
        cout << p << endl;
    }
}

Ausgabe

                            

Anforderungen

Header: <string>

Namespace: std

Siehe auch

Referenz

basic_string-Klasse

<string>