c++笔记 2.17 seekg seekp

c++ primer上说,seek,tell函数的两个版本让人误以为fstream,stringstream的输入流、输出流各自有一个标记,而事实上只有一个标记。用vc9.0实验发现,fstream的确如此,读入字符之后输出流标记也随之变化;但是stringstream却不然,读入字符之后输出流标记不变。

 

进而又发现,虽然fstream只有一个标记,但程序不能有连续的读写/写读,除非两操作之间有seekp或seekg。也就是说,读取流的语句后面必须先有seekp确定写入的位置(即便就是当前位置),才能成功写入。反之亦然。

 

然而,stringstream虽然有两个不同的标记,但是有连续读写/写读操作时,不必调用seek。

 

所以说,不论是fstream还是stringstream,同时进行读写时都最好先调用seek,一是为了确定位置,二是为了成功写入。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值