protected virtual member function
<fstream>

std::filebuf::seekpos

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

如果 which 包含 out,则该函数还将文件中的任何未写入字符写入文件(如果需要,还会调用适当的 unshift)。

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

参数

pos
位置指针的新绝对位置。
streamoff 是一个有符号整数类型。
which
确定受影响的“内部位置指针”是“输入位置”、“输出位置”还是两者兼有。它是 ios_base::openmode 类型的对象,对于此函数,它可以接受以下任意组合的有效常量值:
受影响的位置指针
ios_base::in修改“输入位置”及其对应的“get 指针”(gptr
ios_base::out修改“输出位置”及其对应的“put 指针”(pptr
可以同时选择两个位置。

返回值

成功时,返回 pos
失败时,函数返回 streampos(streamoff(-1))
streampos 是一种定位类型,可以转换为/从整数类型转换(一个 fpos 类型)。

数据竞争

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

异常安全

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

另见