有没有办法检查是否还有字符可以从 ifstream 中读取,如果有,该怎么做?如果您确定这不可能,请告诉我。
在编辑后获取您所询问的内容,可以使用 peek() 函数:
假设有一个名为 f
的 std::ifstream
对象:
if (f && f.peek() == EOF)
std::cout << "Nothing left to read\n";
else
std::cout << "There is something to read or the stream is bad\n";
请记住,这不是一个“更一般”的问题,而是一个不同的问题(也就是说,将此应用到您原来的问题上会出错)
while
条件中:while(stream >> buffer) {
...
stream.eof()
将是最佳解决方案。请参阅 https://en.cppreference.com/w/cpp/io/basic_ios/eof 了解详细信息。但是,在某些情况下,即使已经读取了文件中的最后一个字符,stream.eof()
也可能返回 false。 - jcsahnwaldt Reinstate Monica