gpt4 book ai didi

c++ - seekg 和 seekp:seek(streampos pos) 和 seek(streamoff off, ios::beg) 之间的区别

转载 作者:行者123 更新时间:2023-11-30 02:59:39 26 4
gpt4 key购买 nike

如果我们查看 istream 和 ostream 的文档,我们有以下功能:

istream& seekg ( streampos pos );
istream& seekg ( streamoff off, ios_base::seekdir dir );

ostream& seekp ( streampos pos );
ostream& seekp ( streamoff off, ios_base::seekdir dir );

我想知道为什么每次都有两种形式的函数,而不仅仅是:

istream& seekg ( streamoff off, ios_base::seekdir dir = ios_base::beg );
ostream& seekp ( streamoff off, ios_base::seekdir dir = ios_base::beg );

拥有这两个函数而不是标准的四个函数有什么区别?

最佳答案

streamposstd::fpos<std::char_traits<char>::state_type> 的类型定义它持有流中的当前位置以及当前的类次状态。 shift-jis 等多字节编码方案具有状态相关编码。这基本上意味着根据前面的字符序列,您如何解释流中的某个字节可能会有所不同。与 streampos你不仅在流中持有一个位置,而且在流中那个点的移位状态也被存储。此外,由于换行符等在不同系统上的解释不同,因此文本文件中的逻辑位置可能与其实际物理位置不同。这些是为什么 streampos 的一些原因不能是简单的整数类型。

关于c++ - seekg 和 seekp:seek(streampos pos) 和 seek(streamoff off, ios::beg) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12738594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com