使用 C++ iOS::ate 获取错误的文件大小

get wrong file size with c++ ios::ate

本文关键字:取错误 文件大小 获取 ate C++ iOS 使用      更新时间:2023-10-16

我正在尝试用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