在使用文件的 seekg 和 tellg 进行定位时,我想知道背后发生了什么?
// Open file and get file size
int myFileSize;
std::fstream myFile;
myFile.open(myFileName, std::ios::in|std::ios::binary);
if (myFile.is_open())
{
myFile.seekg(0, std::ios::end);
myFileSize = myFile.tellg();
myFile.seekg(0, std::ios::beg);
myFile.close();
}
问题1:seekg实际上是否遍历整个文件内容,直到找到某个特殊的“EOF字符”?还是使用文件系统提供的其他信息来“知道”文件的结尾在哪里?
问题2:seekg是流寻址操作。这是否意味着整个文件的内容必须通过流进行传输?
如果我的理解有限,请谅解我。