为什么tellg() 返回不准确的文件大小?
在文件处理的上下文中,通常使用tellg() 函数确定文件中的当前位置。但是,tellg() 的某些实现可能会返回超出从文件中读取的实际数据量的值。
理解tellg()
与普遍看法相反、tellg() 不直接报告文件大小。相反,它提供了一个标记值,使用户能够稍后导航到文件中的同一位置。该值的具体解释因操作系统而异。
Unix 与 Windows
在 Unix 系统上,tellg() 通常返回从开头开始的偏移量(以字节为单位)文件。相反,在 Windows 上,返回值仅表示以二进制模式打开的文件的偏移量。对于文本模式文件,tellg() 可能会报告大于实际字节数的任意值。
确定文件大小
要准确确定文件大小,考虑使用以下方法:
#include <limits> file.ignore(std::numeric_limits<std::streamsize>::max()); std::streamsize length = file.gcount(); file.clear(); // Reset eof flag set by ignore file.seekg(0, std::ios_base::beg);
其他注意事项
以上是为什么 `tellg()` 有时会返回不正确的文件大小?的详细内容。更多信息请关注PHP中文网其他相关文章!