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 且 std::ios_base::in 和 std::ios_base::out 均在which
中设置,或 - 计算的
newoff
在off_type
中无法表示,小于零或大于n
。
newoff
的计算方式如下
- 如果
dir
为 std::ios_base::beg,则newoff
为off
。 - 如果
dir
为 std::ios_base::cur,则newoff
为- pptr() - pbase() + off 如果 std::ios_base::out 在
which
中设置,或 - gptr() - eback() + off 如果 std::ios_base::in 在
which
中设置。
- pptr() - pbase() + off 如果 std::ios_base::out 在
- 如果
dir
为 std::ios_base::end,则newoff
为- pptr() - pbase() + off 如果 std::ios_base::out 但不 std::ios_base::in 在 *this 的打开模式中设置,
- 否则为 off + n.
此函数在成功的情况下将指向获取和/或放置区域的下一个指针重新定位到 pbuf + newoff,如果 std::ios_base::in 和/或 std::ios_base::out 对应地在 which
中设置,其中 pbuf
是指向基础缓冲区的开头的指针,如果没有基础缓冲区则为 null 指针值。
内容 |
[编辑] 参数
off | - | 要设置下一个指针的相对位置 | ||||||||
dir | - | 定义要应用相对偏移量的基础位置。它可以是以下常量之一
| ||||||||
which | - | 定义输入序列、输出序列或两者是否受影响。它可以是以下常量之一或它们的组合
|
[编辑] 返回值
如果成功,则为 pos_type(newoff),如果失败,则为 pos_type(off_type(-1)).
[编辑] 示例
本节尚未完善 原因:没有示例 |
[编辑] 另请参阅
[虚函数] |
使用相对寻址重新定位输入序列、输出序列或两者的下一个指针 ( std::basic_stringbuf<CharT,Traits,Allocator> 的虚拟受保护成员函数) |
[虚函数] |
使用相对寻址重新定位输入序列、输出序列或两者的下一个指针 ( std::strstreambuf 的虚拟受保护成员函数) |