在操作文件读写过程中,有时候会访问某一位置的字节以及文件大小,或者操作文件指针进行指定位置的访问,或者想回退某个字节的位置。可以使用tellg()和seekg()。
tellg() 用于在输入流中获取位置
seekg()用于设置在输入流中的位置
函数的本质在于文件中有一个指针,在指针位置进行读写操作,具体的api函数使用如下:
//tellg()定义:
streampos tellg();//返回一个整型数,代表读指针的位置
//example:streampos pos = tellg();//将tellg()返回的指针位置赋值给pos
//seekg()定义:
istream& seekg (streampos pos);//将读指针设置到pos位置
istream& seekg (streamoff off, ios_base::seekdir way);//将读指针设置为way+off,其中off 代表偏移值,而way代表基址
完整用例如下:
int main()
{
ifstream in("in.txt");
string line;
streampos pos = tellg();//记录当前指针位置
int i = 10;
while (i--) {//读到第11行之前
getline(in, line);
}
in.seekg(pos);//将指针指回第1行,可以重新读一次
return 0;
}