首页 > 其他 > 详细

seekg()与tellg()在文档中定位某行不正确的原因

时间:2019-10-13 17:00:47      阅读:147      评论:0      收藏:0      [点我收藏+]

string in_path = "/home/XX/a.prototxt";

stream = ifstream(in_path, std::ios::binary);

std::streampos pos = 0;

while(true){

pos = stream.tellg()

std::istream& ret = stream.getline(line, sizeof(line));

stream.seekg(pos)

}

 

以上这段代码,能够重复读文档中的位置为pos的行,

在有时候,我们需要从文档流中的特定位置读取数据,那么可以用tellg得到这个特定的位置,用seekg将文件流位置设为pos。

即:

stream.tellg()能够给出当前读到了文档中哪一个位置,

stream.seekg(pos)能够设置下次开始读的位置为pos。

但能够使用tellg和seekg精确定位的前提是,文档是以二进制形式打开的,即std::ios::binary。因为系统每次对文档中的符号的解读不一样,所以会导致seekg(pos)时,不能定位到我们想要的位置。

 

seekg()与tellg()在文档中定位某行不正确的原因

原文:https://www.cnblogs.com/mengmengmiaomiao/p/11666667.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!