basic_streambuf :: seekoff ios_base :: in | ios_base :: out指定了吗?
题
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
, ,我们将返回特定序列的新流位置。
解决方案
定义发生的事情有点取决于您的流。内置流不同,因为有些可以具有单独的读写位置(弦乐),而另一些则只有一个(fstream)。
如果用户进行重新定位并指定内外,也许您应该同时移动两者。如果这是一个零偏移以获得当前位置的搜索,那么如果位置有所不同,则失败并非没有道理。
其他提示
从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
不隶属于 StackOverflow