您的位置:首页 > 编程语言 > C语言/C++

读文件时输入流ifstream中函数tellg()与seekg()的详解与示例

2017-05-23 11:14 609 查看
读取文件时有时会需要回退

比如读完第n行想回退到第n-1行再读一次n行

或者读字符时想回退到n个字符之前
都可以使用tellg()和seekg()

tellg() 用于在输入流中获取位置

seekg()用于设置在输入流中的位置

其实本质上文件读写就是一个指针指向文件中某个位置后进行读写,所以简单来说tellg()和seekg()都是用于设置该指针的位置的。

//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;
}


reference:
http://www.cplusplus.com/reference/istream/istream/tellg/ http://www.cplusplus.com/reference/istream/istream/seekg/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息