c++ std::ifstream:检查是否留下字符供读取

C++ std::ifstream: check if characters are left to read

本文关键字:字符 读取 是否 std ifstream 检查 c++      更新时间:2023-10-16

是否有一种方法来检查是否有任何字符留在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) {
    ...

将一直读取,直到流为空或出现其他错误。

…但如果你真的想一次读取一个字符,你应该阅读下面的内容:从流中读取单个字符?