2012-07-12 91 views
6

我正在C++中使用ifstream實現一個程序,它必須在大文件(〜1TB)中尋找。但是,閱讀2GB後,這失敗了。有沒有辦法獲得檔案職位,即使是大型檔案?我編譯了一個32位的Windows機器。用ifstream在大文件中尋找

std::ifstream f; 
f.open(filename.c_str(), std::ifstream::in | std::ifstream::binary); 
while(true) { 
    std::cout << (uint64_t)(f.tellg()) << std::endl; 
    //read data 
} 
+0

我不知道如果這實際上改變什麼,但是你有沒有嘗試過使用簡單的C選擇閱讀文件? – stefan 2012-07-12 09:44:03

+0

@stefan有普通的C文件位置處理程序,其大小大於32位? – triclosan 2012-07-12 11:01:20

+0

正如我所說@triclosan:我不知道,這只是一個想法 – stefan 2012-07-12 11:20:20

回答

1

既然你編譯32位平臺上,如果使用fstream,你會得到32位的訪問。要訪問大型文件,需要使用平臺相關的解決方案:

+0

我會使用這些功能。謝謝! – Patrik 2012-07-14 15:27:27