The Wayback Machine - https://web.archive.org/web/20120718080855/http://pt.cppreference.com:80/w/cpp/string/basic_string/getline
Espaços nominais
Variantes
Acções

getline

Da cppreference.com

Sintaxe:

    #include <string>
    istream& std::getline( istream& is, string& s );
    istream& std::getline( istream& is, string& s, charT delimiter );

O header string do C++ define a função global getline() para ler strings de um stream E/S (I/O stream). A função getline(), que não é parte da classe string, lê uma linha tal como escrita e guarda-a em s. Se um caracter de delimitação for especificado, então getline() usará delimiter para decidir quando deve parar de ler dados. Caso contrário, invoque a segunda forma como se segue:

 return getline( is, s, is.widen( '\n' ) );

NOTA: istream é o tipo istream basic_istream<charT> de acordo com o tipo de caracter.

Por exemplo, o código seguinte lê uma linha de texto de stdin e mostra-a em stdout:

   string s;
   getline( cin, s );
   cout << "You entered " << s << endl;

Depois de guardar uma linha de dados numa string, pode ver que stringstreams são úteis em extrair dados dessa string. Por exemplo, o código seguinte lê números da entrada standard (standard input), ignorando quaisquer linhas "comentadas" que começam com duas barras:

    // espera números delimitados por espaços ou linhas que começam com
    // duas barras (//)
    string s;
    while( getline(cin,s) ) {
      if( s.size() >= 2 && s[0] == '/' && s[1] == '/' ) {
        cout << "  ignoring comment: " << s << endl;
      } else {
        istringstream ss(s);
        double d;
        while( ss >> d ) {
          cout << "  got a number: " << d << endl;
        }
      }
    }

Quando executado com um utilizador a fornecer a entrada, o código acima pode produzir a seguinte saída:

    '' test
      ignoring comment: '' test
    23.3 -1 3.14159
      got a number: 23.3
      got a number: -1
      got a number: 3.14159
    '' next batch
      ignoring comment: '' next batch
    1 2 3 4 5
      got a number: 1
      got a number: 2
      got a number: 3
      got a number: 4
      got a number: 5
    50
      got a number: 50

Uma vez que a função getline() começa a ler na posição actual do ficheiro, também pode ser usada para ler o resto de uma linha, ou quaisquer caracteres até ao delimitador especificado.

Tópicos Relacionados: br-pt/io/get, br-pt/io/getline, stringstream