Ifstream未能解释EOF

时间:2016-03-09 04:21:55

标签: c++ file input file-io

char buf[25];
ifstream fin("test.txt", ifstream::binary);
while (!fin.eof()) {
    bzero(buf, sizeof(buf));
    fin.read(buf, sizeof(buf));
}

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

1 个答案:

答案 0 :(得分:3)

当您通过文件结束时,

fstream.eof仅变为true。发生第四次迭代是因为您已经准确读取了文件的内容并且还没有达到eof。