C:获取文件大小不正确
发布时间:2020-12-16 06:44:10 所属栏目:百科 来源:网络整理
导读:我正在使用 Linux和C.我有一个大小为210732字节的二进制文件,但使用seekg / tellg报告的大小是210728. 我从ls-la获得以下信息,即210732字节: -rw-rw-r– 1 pjs pjs 210732 Feb 17 10:25 output.osr 并用以下代码片段,我得到210728: std::ifstream handle;h
我正在使用
Linux和C.我有一个大小为210732字节的二进制文件,但使用seekg / tellg报告的大小是210728.
我从ls-la获得以下信息,即210732字节:
并用以下代码片段,我得到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个字节.我已经使用十六进制编辑器确认文件的大小是正确的.那为什么我没有得到正确的大小? 我的答案:我认为这个问题是由于多个打开的fstream文件.至少这似乎已经为我整理了.感谢所有帮助的人. 解决方法
至少对于我在64位CentOS 5上的G 4.1和4.4,下面的代码按预期工作,即程序打印的长度与stat()调用返回的长度相同.
#include <iostream> #include <fstream> using namespace std; int main () { int length; ifstream is; is.open ("test.txt",ios::binary | std::ios::in); // get length of file: is.seekg (0,ios::end); length = is.tellg(); is.seekg (0,ios::beg); cout << "Length: " << length << "nThe following should be zero: " << is.tellg() << "n"; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 输入的字符匹配正整数 整数 正数 以及一些正则表达式的总结
- flex端截图流传入java端生成gif图片
- c# – 如何防止RichTextBox刷新其显示?
- cocos2d-x类型转换(CCstring int string char UTF-8互转)以
- oracle – 有没有办法在出错时回滚并退出psql脚本?
- quick-cocos2d-x 3.3rc0 与 2.2.5的区别(三)真机上设置横
- ios – 为什么使用setViewControllers从UINavigationContro
- NANDFLASH硬件驱动交互
- c# – 为什么不能证明这个合同断言?
- “聚合支付”增值盛宴:打通银行垂直账户壁垒