возвращает объект класса ostream, для
возвращает объект класса ostream, для которого она вызвана.
Парной для функции write() из класса ostream
является функция read() из класса istream с такой сигнатурой:
read( char* addr, streamsize size )
read()
читает size
соседних байт из входного потока и помещает их, начиная с адреса addr. Функция gcount()
возвращает число байт, прочитанных при последнем обращении к read(). В свою очередь read() возвращает объект класса istream, для которого она вызвана. Вот пример использования getline(), gcount() и write():
#include <iostream>
int main()
{
const int lineSize = 1024;
int lcnt = 0; // сколько строк прочитано
int max = -1; // длина самой длинной строки
char inBuf[ lineSize ];
// читается до конца строки, но не более 1024 символов
while (cin.getline( inBuf, lineSize ))
{
// сколько символов фактически прочитано
int readin = cin.gcount();
// статистика: счетчик строк, самая длинная строка
++lcnt;
if ( readin > max )
max = readin;
cout << "Строка #" << lcnt
<< "\tПрочитано символов: " << readin << endl;
cout.write( inBuf, readin).put('\n').put('\n');
}
cout << "Всего прочитано строк: " << lcnt
<< endl;
cout << "Самая длинная строка: " << max << endl;
|
}
Когда на вход было подано несколько фраз из романа Германа Мелвилла “Моби Дик”, программа напечатала следующее:
Строка #1 Прочитано символов: 45
Call me Ishmael. Some years ago, never mind
Строка #2 Прочитано символов: 46
how long precisely, having little or no money
Строка #3 Прочитано символов: 48
in my purse, and nothing particular to interest
Содержание Назад Вперед