ifstream中函数tellg()与seekg()

47 篇文章 0 订阅
文章介绍了在C++中进行文件操作时,如何利用tellg()获取读指针的位置,并用seekg()来设置读取位置,以便于对文件的特定部分进行重复访问。示例代码展示了如何记录并回溯到文件的先前位置,以便重新读取。
摘要由CSDN通过智能技术生成

在操作文件读写过程中,有时候会访问某一位置的字节以及文件大小,或者操作文件指针进行指定位置的访问,或者想回退某个字节的位置。可以使用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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值