Перевод этой страницы?:

getline

Синтаксис:

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

Заголовочный файл C++ string описывает глобальную функцию getline(), которая читает строки из потока ввода/вывода. Функция getline(),не являющаяся членом класса string, считывает строку и помещает ее в переменную s. Если определен ограничитель по размеру строки, то getline() сможет использовать этот ограничитель, чтобы остановить считывание данных. Если ограничителя нет, производится следующий вызов функции:

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

Обратите внимание: istream - это поток ввода типа basic_istream<charT>, в соответствии с типом символа.

Например, следующий код считывает строку текста из stdin и выводит ее в stdout:

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

После получения набора данных в виде строки, вы можете обнаружить, что строковые потоки пригодны для извлечения данных из строки. Например, следующий код считывает числа из стандартного потока ввода, игнорируя все «прокоментированные» строки, начинающиеся с двойного слэша:

    // ожидается либо ввод разделенных пробелом чисел, либо строк,
    // начинающихся с двойного слэша (//)
    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;
        }
      }
    }

При использованнии кода с пользовательским потоком ввода, этот код выводит:

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

Так как функция getline() начинает чтение с текущей позиции в файле, она может быть так же использована для чтения остатка строки, или некоторого количества символов до определенного ограничителя.

Смотрите также: get, getline, stringstream