std::basic_spanbuf<CharT,Traits>::seekoff
来自cppreference.com
< cpp | io | basic spanbuf
protected: pos_type seekoff( off_type off, std::ios_base::seekdir dir, |
(C++23 起) | |
若可能则重寻位指向获取和/或放置区的下一位置指针,为对应于距缓冲区的获取和/或放置区的起始、末尾或当前位置恰好 off
个字符的位置。
设 n
为底层缓冲区中的 CharT
元素数,或若无底层缓冲区则为 0,此函数在以下情况失败:
- 待重寻位的指向获取和/或放置区的下一位置指针为空,且计算的
newoff
(见后述)非零,这可能在无底层缓冲区或 *this 不是以which
所要求的模式打开时出现,或 -
dir
为 std::ios_base::cur 且which
中一同设置了 std::ios_base::in 和 std::ios_base::out,或 - 计算的
newoff
无法以off_type
表示、小于零或大于n
。
newoff
计算如下:
- 若
dir
为 std::ios_base::beg,则newoff
为off
。 - 若
dir
为 std::ios_base::cur,则newoff
- 若
which
中设置了 std::ios_base::out,则为 pptr() - pbase() + off,或 - 若
which
中设置了 std::ios_base::in,则为 gptr() - eback() + off。
- 若
- 若
dir
为 std::ios_base::end,则newoff
- 若 *this 的打开模式中设置了 std::ios_base::out 但非 std::ios_base::in,则为 pptr() - pbase() + off,
- 否则为 off + n。
若在 which
中相应地设置了 std::ios_base::in 和/或 std::ios_base::out,则此函数在成功时重寻位指向获取和/或放置区的下一位置指针为 pbuf + newoff,其中 pbuf
是指向底层缓冲区的指针,或若无底层缓冲区则为空指针值。
参数
off | - | 要设置下一位置指针到的相对位置 | ||||||||
dir | - | 定义应用偏移量的基位置。它可为下列常量之一:
| ||||||||
which | - | 定义所影响的是输入序列、输出序列还是两者。它可为下列常量之一或其组合:
|
返回值
成功时为 pos_type(newoff),失败时为 pos_type(off_type(-1))。
示例
本节未完成 原因:暂无示例 |
参阅
[虚] |
用相对寻址,重定位输入序列、输出序列或两者中的下一位置指针 ( std::basic_stringbuf<CharT,Traits,Allocator> 的虚受保护成员函数) |
[虚] |
用相对寻址重寻位输入序列、输出序列或两者中的下一位置指针 ( std::strstreambuf 的虚受保护成员函数) |