ifstream::read не говорит, сколько байтов он действительно читает?

Я использую ifstream::read для чтения файла,

ifstream ifs("a.txt");
char buf[1024];
ifs.read(buf, 1024);

Но размер файла .txt может быть меньше 1000 bytes, так как же мне узнать, сколько байтов было прочитано из ifs?


person Alcott    schedule 30.07.2012    source источник


Ответы (1)


Вы можете получить количество символов, извлеченных последней операцией, с помощью std::ifstream::gcount:

ifstream ifs("a.txt");
char buf[1024];
ifs.read(buf, 1024);
size_t extracted = ifs.gcount();

or

ifstream ifs("a.txt");
char buf[1024];
size_t extracted = ifs.read(buf, 1024).gcount();

поскольку read(...) возвращает *this.

person Zeta    schedule 30.07.2012