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 的虚受保护成员函数) |