是否有一种方法来检查是否有任何字符留在ifstream中读取,如果是,我该如何做到这一点。如果你确定这是不可能的,请告诉我。
要在编辑后得到您想要的内容,您可以使用peek()函数:
给定std::ifstream
称为f
if (f && f.peek() == EOF)
std::cout << "Nothing left to readn";
else
std::cout << "There is something to read or the stream is badn";
但请记住,这不是一个"更一般"的问题,这是一个不同的问题(也就是说,将此应用于您的原始问题将是一个错误)
您应该将读取操作放在while
条件中:
while(stream >> buffer) {
...
将一直读取,直到流为空或出现其他错误。
…但如果你真的想一次读取一个字符,你应该阅读下面的内容:从流中读取单个字符?