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);
- 效果:改变一个或多个中的流位置 受控序列的方式是为每个单独定义的 本条款中的
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
或 ios_base::out
,我们会返回特定序列的新流位置。
答案 0 :(得分:1)
您可以通过流来定义发生的情况。内置流不同,有些可以有独立的读写位置(stringstream),而其他只有一个(fstream)。
如果用户进行了重新定位并指定了输入和输出,也许您应该同时移动它们。如果是具有零偏移的搜索来获得当前位置,如果位置不同则失败是不合理的。
答案 1 :(得分:0)
从27.8.2.4开始寻找后,你似乎会失败。
检查条件表130,其表明仅当
时才应定位输入和输出序列(which & (ios_base::in | ios_base::out)) == (ios_base::in) | ios_base::out))
and way == either ios_base::beg or ios_base::end