如果流无法解释 EOF

Ifstream failing to interpret EOF

本文关键字:EOF 无法解释 如果      更新时间:2023-10-16
char buf[25];
ifstream fin("test.txt", ifstream::binary);
while (!fin.eof()) {
    bzero(buf, sizeof(buf));
    fin.read(buf, sizeof(buf));
}

文件测试.txt包含 75 个字符,没有换行符或任何其他特殊字符。给定代码,while 循环应该只迭代 3 次,但最终迭代 4 次。在上次迭代期间,buf 变量中未存储任何内容。为什么会这样?

fstream.eof只有在通过文件末尾时才true。发生第四次迭代是因为您已准确读取文件的内容,但尚未到达 eof。