Udostępnij za pośrednictwem


getline

Wyodrębnij ciągi z strumień wejściowy wiersz po wierszu.

// (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);

Parametry

  • is
    Strumień wejściowy, z którego ma zostać wyodrębnione ciąg.

  • str
    Ciąg, do którego będą odczytywane znaki z strumień wejściowy.

  • delim
    Ogranicznik wiersza.

Wartość zwracana

Strumień wejściowy is.

Uwagi

Para sygnatury funkcji oznaczone (1) wyodrębnione znaki z is do momentu delim zostanie znaleziony, przechowywania ich w str.

Para sygnatury funkcji oznaczone (2) użyć nowego wiersza jako domyślnym ogranicznikiem linii i zachowują się jako getline(is, str, is.widen('\n')).

Funkcja drugi każdej pary jest analogowo-pierwsza z nich do obsługi odwołuje się do rvalue.

Zatrzymuje się ekstrakcji, gdy wystąpi jedno z następujących czynności:

  • Na końcu pliku w takim przypadku flagę stanu wewnętrznego is ma ustawioną wartość ios_base::eofbit.

  • Po funkcji wyodrębnia element, który porównuje równą delim, w takim przypadku element nie jest przesunięty ani dołączona do kontrolowanych sekwencji.

  • Po wyodrębnia funkcji str.max_size elementów, w których przypadku flagi stanu wewnętrznego obiektu is ma ustawioną wartość ios_base::failbit.

  • Inny błąd innych niż wcześniej na liście, w takim przypadku flagę stanu wewnętrznego is ma ustawioną wartość ios_base::badbit

Dla informacji o flagach wewnętrzny stanu, zobacz ios_base::iostate.

Jeśli funkcja wyodrębnia żadnych elementów, stan wewnętrzny flagę is ma ustawioną wartość ios_base::failbit.W każdym przypadku getline zwraca is.

Jeśli wyjątek is i str pozostają w prawidłowym stanie.

Przykład

Poniższy kod pokazuje getline() w dwóch trybach: najpierw z domyślnym ogranicznikiem (wierszem), a drugi z odstępem jako ogranicznik.Znak końca pliku (na klawiaturze klawisze CTRL + Z) służy do kontroli zakończenia chwilę pętle.To ustawia flagę stanu wewnętrznego z cin do eofbit, muszą zostać wyczyszczone z basic_ios::clear() przed sekundę podczas pętli będzie działać prawidłowo.

// 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;
    }
}

Dane wyjściowe

                          

Wymagania

Nagłówka: < ciąg >

Przestrzeni nazw: Standard

Zobacz też

Informacje

basic_string — Klasa

<string>