C ++ 64位std :: ostream支持

时间:2009-11-17 15:11:08

标签: c++ linux 64-bit large-files

我即将从使用标准FILE指针从一些旧代码转换到使用C ++流,但我需要LARGEFILE寻求支持(激活此支持的编译器标志是: -D_FILE_OFFSET_BITS = 64 et al)我可以使用 off64_t 数据类型获得。

关于此主题和C API的我original question was answered,现在我希望能够转向使用C ++流。

在C ++中,相同的标志是否触发了对文件流的搜索能力?

1 个答案:

答案 0 :(得分:4)

所以我对一个16GB的文件进行了快速测试,似乎已经有效了。这是我使用的代码。

// compiled with : g++ -o largefile -D_FILE_OFFSET_BITS=64 largefile.cpp
#include "iostream"
#include "fstream"

int
main (int argc, char * argv[]) {
        char line[4096];
        std::ifstream stream ("/home/jbellone/largefile.csv");

        // Seek forward to somewhere past 4GB
        stream.seekg (10294967296, std::ios_base::beg);

        stream.getline (line, 100);

        std::cout << stream.tellg() << " " << line << "\n";      
}