это максимальное число символов, читаемых
sink – это массив, в который помещаются символы. size – это максимальное число символов, читаемых из потока istream. delimiter – это символ-ограничитель, при обнаружении которого чтение прекращается. Сам ограничитель не читается, а оставляется в потоке и будет прочитан следующим. Программисты часто забывают удалить его из потока перед вторым обращением к get(). Чтобы избежать этой ошибки, в показанной ниже программе мы воспользовались функцией-членом ignore()
класса istream. По умолчанию ограничителем является символ новой строки.
Символы читаются из потока, пока одно из следующих условий не окажется истинным. Как только это случится, в очередную позицию массива помещается двоичный нуль.
· прочитано size-1
символов;
· встретился конец файла;
· встретился символ-ограничитель (еще раз напомним, что он остается в потоке и будет считан следующим).
Эта форма get()
возвращает объект istream, для которого была вызвана (функция-член gcount() позволяет узнать количество прочитанных символов). Вот простой пример ее применения:
#include <iostream>
int main()
{
const int max_line = 1024;
char line[ max_line ];
while ( cin.get( line, max_line ))
{
// читается не больше max_line - 1 символов,
// чтобы оставить место для нуля
int get_count = cin.gcount();
cout << "фактически прочитано символов: "
<< get_count << endl;
// что-то сделать со строкой
// если встретился символ новой строки,
// удалить его, прежде чем приступать к чтению следующей
if ( get_count < max_line-1 )
cin.ignore();
}
|
}
Если на вход этой программы подать текст о юной Алисе Эмме, то результат будет выглядеть так:
Содержание Назад Вперед