我正在使用 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
}
由于您是在 32 位平台上编译,如果您使用fstream
,您将获得 32 位访问权限。要访问大文件,您需要使用依赖于平台的解决方案:
- 对于 Windows,使用_lseeki64() http://msdn.microsoft.com/en-us/library/1yee101t%28v=vs.110%29.aspx
- 对于 Linux,使用lseek64() http://linux.die.net/man/3/lseek64
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)