受保护的虚成员函数
<fstream>

std::basic_filebuf::seekpos

pos_type seekpos (pos_type pos, ios_base::openmode which = ios_base::in | ios_base::out);
将位置指针设置为绝对位置
设置由参数 which 指定的内部位置指针的绝对新位置 pos

如果 which 包含 out,该函数还将把中间输出缓冲区中任何未写入的字符写入文件(如果需要,还会调用使用适当的 facet 的 unshift)。

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

参数

pos
位置指针的新绝对位置。
成员类型 pos_type字符特性确定:通常,它是一个 fpos 类型(如 streampos),可以与整数类型相互转换。
which
确定受影响的内部位置指针输入位置输出位置或两者。它是类型为 ios_base::openmode 的对象,对于此函数,它可以接受以下重要常量值的任何组合:
受影响的位置指针
ios_base::in修改输入位置及其对应的获取指针gptr)。
ios_base::out修改输出位置及其对应的 put 指针pptr)。
这两个位置可以同时选择。

返回值

成功时,返回 pos
失败时,函数返回 pos_type(off_type(-1))
成员类型 pos_type字符特性确定:通常,它是一个 fpos 类型(如 streampos),可以与整数类型相互转换。

数据竞争

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

异常安全

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

另见