Ifstream, чтение байтов?

Как вы можете узнать, сколько байтов было прочитано с помощью функции ifstream:: read?

Скажите, что файл имеет 10 байт, а в окнах говорится, что он тоже 10 байт, но в файле всего 8 байтов, поэтому, когда я его читаю, он читает только 8 байтов, поэтому я заканчиваю слишком большим буфер.

Ответы

Ответ 1

Вы можете узнать, вызвав gcount() в потоке сразу после чтения.

ifs.read(buf, sizeof buf);
std::streamsize bytes = ifs.gcount();

Ответ 2

Существует функция, называемая readsome(...), которая делает то, что вы хотите:

streamsize readsome ( char* s, streamsize n );

Возвращаемое значение Число символов экстрагируют.