问题
I'm implementing a program in C++ using ifstream that must seek in large files (~1TB). However, this fails after reading 2GB. Is there a way to get file positions, even for large files? I compile for a 32-bit windows machine.
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
}
回答1:
Since you are compiling on a 32-bit platform, if you use fstream
, you are going to get 32-bits access. To access large files, you need to use a platform dependent solution :
- for windows, use _lseeki64()
- for linux, use lseek64()
来源:https://stackoverflow.com/questions/11448713/seeking-in-large-files-with-ifstream