2009-11-17 143 views
1

我即將從使用一些舊代碼的標準FILE指針轉換到使用C++流,但我需要LARGEFILE尋求支持(激活此支持的編譯器標誌是: -D_FILE_OFFSET_BITS = 64 et al),我可以通過使用off64_t數據類型來獲得它。我的original question was answered關於這個主題和C API,現在我希望能夠轉向使用C++流。C++ 64位std :: ostream支持

在C++中對文件流執行相同的標誌觸發器尋找能力嗎?

回答

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";  
}