如何检查文件中是否没有要读取的数据
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