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
为- pptr() - pbase() + off ,若
which
中设置了 std::ios_base::out ,或 - gptr() - eback() + off ,若
which
中设置了 std::ios_base::in 。
- pptr() - pbase() + off ,若
- 若
dir
为 std::ios_base::end ,则newoff
为- pptr() - pbase() + off ,若 *this 的打开模式中设置了 std::ios_base::out 但非 std::ios_base::in ,
- 否则为 off + n 。
此函数在成功时重寻位指向获取和/或放置区的下一位置指针为 pbuf + newoff ,若在 which
中相应地设置了 std::ios_base::in 和/或 std::ios_base::out ,其中 pbuf
是指向底层缓冲区的指针,或若无底层缓冲区则为空指针值。
参数
off | - | 要设置下一位置指针到的相对位置 | ||||||||
dir | - | 定义应用偏移到的基位置。它能为下列常量之一:
| ||||||||
which | - | 定义影响的是输入序列、输出序列还是两者。它能为下列常量之一或其组合:
|
返回值
成功时为 pos_type(newoff) ,失败时为 pos_type(off_type(-1)) 。
示例
本节未完成 原因:暂无示例 |
参阅
[虚] |
用相对寻址,重定位输入序列、输出序列或两者中的下一位置指针 ( std::basic_stringbuf<CharT,Traits,Allocator> 的虚受保护成员函数) |
[虚] |
用相对寻址重寻位输入序列、输出序列或两者中的下一位置指针 ( std::strstreambuf 的虚受保护成员函数) |