2012-07-12 80 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