C ++ std :: ifstream:检查字符是否可以读取

时间:2013-05-16 20:26:08

标签: c++ stream ifstream

有没有办法检查是否有任何字符留在ifstream中阅读,如果是,我该怎么做呢。如果您确定无法做到这一点,请告诉我。

编辑:我将问题改为更一般。

2 个答案:

答案 0 :(得分:6)

要了解编辑后您要问的内容,可以使用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";

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

答案 1 :(得分:2)

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

while(stream >> buffer) {
    ...

直到流为空或发生其他错误时才会读取。

...但如果你真的想一次读一个字,你应该读一下:Reading a single character from an fstream?