【发布时间】:2013-01-25 10:22:10
【问题描述】:
在对文件使用 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();
}
Q1: seekg 是否真的遍历文件的全部内容,直到找到一些特殊的“EOF 字符”?还是它使用文件系统提供的一些其他信息来“知道”文件的结尾在哪里?
Q2: seekg 是一个流搜索操作。这是否意味着文件的全部内容都必须通过流?
如果我对这一切是如何运作的只有一个初步的了解,请原谅我。
【问题讨论】: