getline
Extrahujte řetězce vstupního datového proudu řádek po řádku.
// (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
Vstupní datový proud, ze kterého má být extrahován řetězec.str
Řetězec, do nějž jsou načteny znaky ze vstupního datového proudu.delim
Oddělovač, který řádek.
Vrácená hodnota
Vstupní datový proud is.
Poznámky
Dvojice funkce podpisů označena (1) extrahovány znaky z is dokud delim není nalezen, je v ukládání str.
Dvojice funkce podpisů označena (2) pomocí nového řádku jako oddělovač řádku výchozí a chovají jako getline(is, str, is.widen('\n')).
Funkce second každé dvojice je analogie na první z nich pro podporu odkazy rvalue.
Extrakce zastaví se, když dojde k jedné z následujících akcí:
Na konec souboru v takovém případě příznak vnitřní stav is je nastavena na ios_base::eofbit.
Poté, co funkce extrahuje element, který porovnává rovná delim, v takovém případě elementu je umístěna zpět ani připojenou k řízené sekvenci.
Poté, co funkce extrahuje str.max_size prvky, ve kterém případu příznak vnitřní stav is je nastavena na ios_base::failbit.
Některé další chybě, která dříve uvedeny, v takovém případě příznak vnitřní stav is je nastavena na ios_base::badbit
Informace o použití příznaků vnitřní stav naleznete v tématu ios_base::iostate.
Pokud funkce extrahuje žádné elementy, vnitřní stav příznak is je nastavena na ios_base::failbit.V žádném případě getline vrátí is.
Pokud je vyvolána výjimka, is a str jsou ponechána v platném stavu.
Příklad
Následující kód ukazuje getline() ve dvou režimech: nejprve s výchozím oddělovačem (nový řádek) a druhý prázdný znak jako oddělovač.Znak konce souboru (klávesy CTRL + Z na klávesnici) se používá k řízení ukončení klienta při cykly.Nastaví příznak vnitřní stav cin k eofbit, které musí být zrušeno s basic_ios::clear() před druhou při cyklu bude fungovat správně.
// 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;
}
}
Výstup
Požadavky
Záhlaví: < řetězec >
Obor názvů: směrodatné