使用c ++ stl读取大于4GB的文件

Rai*_*dog 17 c++ file-io iostream

几个星期前,我使用std :: ifstream读取一些文件,并且在打开时立即失败,因为文件大于4GB.当时我无法找到一个合适的答案,为什么它限于32位文件大小,所以我使用本机OS API编写了自己的.

那么,我的问题是:有没有办法使用std :: ifstream/std :: ostream处理大小超过4GB的文件(IE:标准c ++)

编辑:使用VC 9编译器(Visual Studio 2008)中的STL实现.EDIT2:当然必须有标准方法来支持大于4GB的文件大小.

Eug*_*ota 14

显然,这取决于off_t图书馆的实施方式.

#include <streambuf>
__int64_t temp=std::numeric_limits<std::streamsize>::max();
Run Code Online (Sandbox Code Playgroud)

为您提供当前最大值.

STLport支持更大的文件.


Kei*_*thB 5

几年前我在Linux上使用gcc遇到了这个问题.操作系统支持大文件,C库(fopen等)支持它,但C++标准库没有.我发现我必须使用正确的编译器标志重新编译C++标准库.