protected virtual member function
<fstream>

std::basic_filebuf::seekoff

pos_type seekoff (off_type off, ios_base::seekdir way,                  ios_base::openmode which = ios_base::in | ios_base::out);
设置内部位置到相对位置
设置由参数 which 指定的内部位置指针的新位置。此位置是通过相对于 way 指定的原点偏移 off 个字符来计算的。

除非 off 为零且 waycur,否则该函数还将把中间输出缓冲区中的任何未写入字符写入文件(必要时,还会使用适当的 unshift 调用的 unshift)。

成功时,此函数的效果与调用 fseek 等效(有关详细信息和限制,例如在以文本模式打开的文件上,请参阅 fseek)。

此虚函数由公共成员 basic_streambuf::pubseekoff 调用。

参数

off
偏移量,相对于 way 参数。
如果流使用可变宽度或状态相关的 encoding,则 off 必须为零(否则函数将失败)。
成员类型 off_type 由 *字符特性* 确定:通常,它是已签名整型 streamoff 的别名。
way
类型为 ios_base::seekdir 的对象,指示偏移量应用的来源。它可以取以下任意常量值:
偏移量相对于...
ios_base::beg文件开头
ios_base::cur输入位置输出位置的当前位置,具体取决于参数 which
ios_base::end文件结尾
which
确定受影响的是哪个内部位置指针输入位置输出位置或两者。它是一个 ios_base::openmode 类型的对象,对于此函数,它可以接受以下任意组合的有效常量值。
受影响的位置指针
ios_base::in修改输入位置及其相应的获取指针gptr)。
ios_base::out修改输出位置及其相应的 put 指针pptr)。
可以同时选择两个位置,但如果当 wayios_base::cur 时同时选择两者,则函数将失败。

返回值

成功时,它返回调用后内部位置指针指向的新绝对位置(如果能表示为成员类型 pos_type 的值)。
失败时,或者无法做到上述情况时,该函数返回 pos_type(off_type(-1))
成员类型 pos_type字符特性确定:通常,它是一个 fpos 类型(例如 streampos),该类型可以转换为/从整数类型转换。

数据竞争

修改 basic_filebuf 对象。
同时访问同一个文件流缓冲区对象可能导致数据争用。

异常安全

基本保证:如果抛出异常,*文件流缓冲区*处于有效状态。

另见