使用STL处理C中大于2 GB的文件

前端之家收集整理的这篇文章主要介绍了使用STL处理C中大于2 GB的文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在进行二进制文件处理,在我的算法中我想知道pos_type和off_type的实际类型,例如在计算文件大小或寻找给定位置(tellg和seekg)时.

在计算文件大小时,我只需将pos_type static_cast转换为int64_t,它似乎工作正常.

寻求怎么样?将int64_t传递给它是否安全?

有没有办法让pos_type和off_type成为int64_t,也许使用特征?

我想消除这个可怕的演员并找到一种符合C标准的方法.

更新:另见

> Is it safe to assign pos_type to uint64_t when dealing with large files (> 2GB)?
> iostream and large file support

解决方法

并非所有编译器都具有大文件支持的STL实现.

例如,以下程序:

#include <fstream>
#include <iostream>
#include <limits>

int main()
{
    using namespace std;

    cout << numeric_limits<streamoff>::max() << endl;
}

结果是:

> VS2005 – 2147483647
> VS2008 – 2147483647
> VS2010 – 9223372036854775807
> MinGW GCC 4.4.0 – 9223372036854775807

另一方面STLPort具有跨平台大文件支持.

猜你在找的C&C++相关文章