使用ifstream查找大文件

Pat*_*rik 7 c++ file-io fstream

我正在使用ifstream在C++中实现一个必须在大文件中搜索的程序(~1TB).但是,读取2GB后失败.有没有办法获得文件位置,即使对于大文件?我编译为32位Windows机器.

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
}
Run Code Online (Sandbox Code Playgroud)

BЈо*_*вић 2

由于您是在 32 位平台上进行编译,因此如果您使用fstream,您将获得 32 位访问权限。要访问大文件,您需要使用依赖于平台的解决方案: