我在使用 c++ 文件流解析文本文件时遇到了一个奇怪的问题。这是代码:
while (true)
{
std::getline(inFile, line);
if (!inFile.good())
{
std::cout << "Fail, bad and eof flags:" << inFile.fail() << inFile.bad() << inFile.eof() << std::endl;
break;
}
parseLine(line);
}
当读取终止时,输出为:
Fail, bad and eof flags:001
但实际上阅读器并没有到达文件的末尾。我打开文件,发现下一个字符实际上是 26(ASCII 码)。那么问题来了:1)为什么在读取这个字符的时候设置了eof标志,如何避免这种错误终止呢?2)如何从这种状态中恢复?谢谢!
PS:谢谢回复。如果我以二进制模式读取文件怎么办?有更好的解决方案吗?我使用的是 Windows 平台,但该文件似乎是一个 unix 文件。