我正在进行二进制文件处理,在我的算法中,我想知道pos_type
和off_type
的实际类型,例如在计算文件大小或寻找给定位置时( tellg
和seekg
)。
在计算文件大小时我只需static_cast
pos_type
到int64_t
,它似乎工作正常。
seekg
怎么样?将int64_t
传递给它是否安全?
有没有办法让 pos_type
和 off_type
成为 int64_t
, 可能正在使用 traits
?
我想消除这个可怕的演员并找到一种符合C ++标准的方式。
更新:另见
答案 0 :(得分:10)
并非所有编译器都具有大文件支持的STL实现。
例如,以下程序:
#include <fstream>
#include <iostream>
#include <limits>
int main()
{
using namespace std;
cout << numeric_limits<streamoff>::max() << endl;
}
结果:
另一方面,STLPort具有跨平台大文件支持。
答案 1 :(得分:1)
您应该使用std :: fpos_t typedef。