我正在使用Linux和C++。我有一个大小为210732个字节的二进制文件,但seekg /所以tellg报告尺寸为210728.C++:获取不正确的文件大小
我从LS-LA,即210732个字节以下信息:
-RW -rw-R-- 1个PJS PJS 210732 02月17日10:25 output.osr
并与下面的代码片段,我得到210728:
std::ifstream handle;
handle.open("output.osr", std::ios::binary | std::ios::in);
handle.seekg(0, std::ios::end);
std::cout << "file size:" << static_cast<unsigned int>(handle.tellg()) << std::endl;
所以我的代码是关闭的4个字节。我已使用十六进制编辑器确认文件的大小是正确的。那么为什么我没有得到正确的尺寸?
我的答案:我认为这个问题是由于文件有多个开放的fstreams引起的。至少这似乎已经整理出来了。感谢所有帮助过我的人。
这是在所有的文件系统的情况下(情况你有几个)? – hlovdal 2010-02-17 16:51:08
不幸的是,我没有选择在不同的文件系统上测试。 – PSJ 2010-02-17 16:52:09
适用于我的32位Ubuntu系统。你使用g ++吗? – tur1ng 2010-02-17 16:53:22