如何检查文件中是否没有要读取的数据
std::fstream fin("emptyFile", std::fstream::in); std::cout << fin.eof() << std::endl;
这将打印0。所以使用eof函数我无法检查文件是否为空。或者在阅读了一些数据之后,我需要检查其中是否没有其他数据。如何检查文件中是否没有要读取的数据
回答:
有两种方法来检查,如果你“可以读的东西”从文件:
- 尝试读它,如果它失败,这是不正确的...(例如
fin >> var;) - 检查文件的大小,使用
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
