如何检查文件中是否没有要读取的数据

std::fstream fin("emptyFile", std::fstream::in); 

std::cout << fin.eof() << std::endl;

这将打印0。所以使用eof函数我无法检查文件是否为空。或者在阅读了一些数据之后,我需要检查其中是否没有其他数据。如何检查文件中是否没有要读取的数据

回答:

有两种方法来检查,如果你“可以读的东西”从文件:

  1. 尝试读它,如果它失败,这是不正确的...(例如fin >> var;
  2. 检查文件的大小,使用fin.seekg(0, ios_base::end);其次是size_t len = fin.tellg();(然后回到fin.seekg(0, ios_base::beg);开始

但是,如果您尝试从文本文件中读取整数,则第二种方法可能无法工作 - 文件可能为2MB长,但仍不包含单个整数值,因为它全部是空格和换行符等。

请注意,fin.eof()会告诉您是否尝试读取BEYOND文件的末尾。

回答:

eof()给出错误结果,因为eofbit尚未设置。如果你读了一些东西,你会通过文件的末尾并设置eofbit

避免eof()和使用以下命令:

std::streampos current = fin.tellg(); 

fin.seekg (0, fin.end);

bool empty = !fin.tellg(); // true if empty file

fin.seekg (current, fin.beg); //restore stream position

以上是 如何检查文件中是否没有要读取的数据 的全部内容, 来源链接: utcz.com/qa/258277.html

回到顶部