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。
如果 which
中相應設定了 std::ios_base::in 和/或 std::ios_base::out,則此函式在成功時將獲取和/或放置區域的下一個指標重新定位到 pbuf + newoff,其中 pbuf
是指向底層緩衝區開頭的指標,如果不存在底層緩衝區,則為 null 指標值。
目錄 |
[編輯] 引數
off | - | - | ||||||||
dir | - | 定義應用相對偏移量的基本位置。它可以是以下常量之一
| ||||||||
which | - | -
|
[編輯] 返回值
成功時為 pos_type(newoff),失敗時為 pos_type(off_type(-1))。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 另請參閱
[虛擬函式] |
使用相對定址重新定位輸入序列、輸出序列或兩者的下一個指標 ( std::basic_stringbuf<CharT,Traits,Allocator> 的虛保護成員函式) |
[虛擬函式] |
使用相對定址重新定位輸入序列、輸出序列或兩者的下一個指標 ( std::strstreambuf 的虛保護成員函式) |