使用 C++ iOS::ate 获取错误的文件大小
get wrong file size with c++ ios::ate
我正在尝试用c ++获取文件的文件大小。代码是这样的:
ifstream fin(filepth, ios::in | ios::binary | ios::ate);
if (!fin.is_open()) {
cout << "cannot open file:" << filepth << endl;
}
int len = fin.tellg();
fin.seekg(0, ios::beg);
fin.clear();
cout << "file length is: " << len << endl;
cout << "file length is: " << fs::file_size(fs::path(filepth)) << endl;
事实证明,ios::ate
的方法得到了错误的结果。我错过了什么,我怎样才能得到正确的结果?
我得到了问题的原因。我的文件长约 9 GB,不能用 32 位int
变量表示。我用了int64_t
,问题不再存在。
以下是详细信息的链接,因为我认为file_size的返回类型需要类型化: https://www.codingame.com/playgrounds/5659/c17-filesystem
相关文章:
- 读取某些文件时出现分段错误,似乎与文件大小无关
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- 构建挂起,即使是适度的文件大小
- 如何在Windows内核中获取文件大小
- 为什么负数不取模向量大小给出负数?
- 为什么 QFileSystemWatcher 会发出多个信号?而 QFileInfo 首次写入零文件大小
- 使用 C++ iOS::ate 获取错误的文件大小
- 相同的源代码,不同的可执行文件大小?
- 为什么未关闭的文件大小为 4 字节
- AMQP-CPP >处理程序中的错误文件描述符
- Xcode OSX上的C++构建失败,出现多个错误文件IO..不可用:在macOS 10.15中引入
- 读取二进制文件大小的短自上周以来停止工作
- 如何减小C++标准库libstdc++.so文件大小
- 文件大小和缓冲区过冲
- 错误的donwloaded文件大小在QT 5.6中
- 是否存在fseek/ftell可能给出错误文件大小的情况
- 从ifstream文件读取时给出了错误的大小
- 为什么stat()调用会返回一个错误的0(0)文件大小值?
- 从资源中提取文件,文件大小错误
- tellg()函数给出了错误的文件大小