basic_streambuf :: seekoff当ios_base :: in |时应该返回什么 是否指定了ios_base :: out?

0xb*_*00d 8 c++ iostream streambuf

27.6.3.4.2缓冲区管理和定位

pos_type seekoff(off_type off, ios_base::seekdir way,
    ios_base::openmode which = ios_base::in | ios_base::out);
Run Code Online (Sandbox Code Playgroud)
  • 效果:以一种basic_streambuf为本条款(27.8.2.4,27.9.1.5)中派生的每个类别单独定义的方式改变一个或多个受控序列中的流位置.
  • 默认行为:返回pos_type(off_type(-1)).

到现在为止还挺好.basic_streambuf我正在使用的派生可以单独改变其位置ios_base::in和/或ios_base::out.但是,当指定两者时,我需要返回什么?

如果指定ios_base::in or ios_base::out,我们将返回特定序列的新流位置.

Bo *_*son 1

发生什么情况需要由您的直播来定义。内置流的不同之处在于,有些可以具有单独的读取和写入位置(stringstream),而其他流则只有一个(fstream)。

如果用户重新定位并指定进出,也许您应该将两者都移动。如果是用零偏移来获取当前位置的寻道,如果位置不同,失败也不是没有道理的。