有没有办法检查是否有任何字符留在ifstream中阅读,如果是,我该怎么做呢。如果您确定无法做到这一点,请告诉我。
编辑:我将问题改为更一般。
答案 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?