11

有没有办法检查 ifstream 中是否有任何字符要读取,如果是,我该怎么做。如果您确定这是不可能的,请告诉我。

4

2 回答 2

8

要在编辑后获得您要询问的内容,可以使用peek()函数:

给定一个std::ifstream被调用的f

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";

但请记住,这不是一个“更一般”的问题,而是一个不同的问题(也就是说,将此应用于您的原始问题将是一个错误)

于 2013-05-16T21:30:16.000 回答
2

您应该将读取操作置于您的while条件下:

while(stream >> buffer) {
    ...

这将一直读取,直到流为空或发生另一个错误。

...但如果您真的想一次读取一个字符,您应该阅读以下内容:Reading a single character from an fstream?

于 2013-05-16T20:33:56.227 回答