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

问题描述 投票:8回答:2

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

编辑:我改变了我的问题更一般。

c++ stream ifstream
2个回答
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";

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


2
投票

您应该将读取操作放在while条件中:

while(stream >> buffer) {
    ...

这将读取直到流为空或发生其他错误。

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

© www.soinside.com 2019 - 2024. All rights reserved.