开发者社区> 问答> 正文

如果seekg与seekp没什么分别,那它们分别存在的意思是什么。

如题!!
有几个简单问题相请教大家:
1.fstream到底是分别有一个读指针和一个写指针呢,还是共用一个指针进行读写.
2.为什么seekg与seekp会互相影响,也就是说seekg(10)=seekp(10)=tellp()=tellg().
3.如果seekg与seekp没什么分别,那它们分别存在的意思是什么。

展开
收起
a123456678 2016-03-09 18:35:40 3583 0
1 条回答
写回答
取消 提交回答
  • C++標準並不會去問對方如何去實現,所以
    1) 你用的Linux XXX版本的libstdc++有可能使用同一個指針去實現seekg和seekp的功能,但在標準中你不該理解為同一的指針. 所以你理論上不用管他們是否IO都用同一個指針而是看有沒有錯。

    2)如果你要不影響,你可以用不同的Stream。但問題不應該在互相影響上,而是在你沒有使用tellg時你不能說seekg的位置對不對, 同時你不用tellp不被調時,你也不可能知道seekp對不對,重點是你用seekp前要先知道自己在那,除了頭和尾.

    3) 一個是用來讀的interface另一個是用來寫的, 如果你再往深一層去想,把File Stream的操作改為通用的stream,那不同的stream就有可能有不一樣的g和p指針而你的實現將不能重用.

    2019-07-17 18:56:33
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Android插件化-从入门到"放弃" 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载