有没有办法检查ifstream中是否有任何字符要读取,如果是,我该怎么做呢。如果您确定无法做到这一点,请告诉我。
编辑:我改变了我的问题更一般。
要在编辑后获得您所要求的内容,您可以使用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";
但请记住,这不是一个“更一般”的问题,这是一个不同的问题(也就是说,将此应用于您的原始问题将是一个错误)
您应该将读取操作放在while
条件中:
while(stream >> buffer) {
...
这将读取直到流为空或发生其他错误。
...但如果你真的想一次读一个字,你应该读一下:Reading a single character from an fstream?