std::basic_stringbuf<CharT,Traits,Allocator>::init_buf_ptrs
來自 cppreference.com
< cpp | io | basic stringbuf
void init_buf_ptrs(); |
(僅作說明*) | |
根據 mode,從 buf 初始化輸入和輸出序列。buf 和 mode 是 *this 的僅用於闡釋的資料成員。
此函式返回後,立即
- 若 std::ios_base::out 在 mode 中設定,則 pbase() 指向 buf.front(),且 epptr() >= pbase() + buf.size() 為 true;
- 此外,若 std::ios_base::ate 在 mode 中設定,則 pptr() == pbase() + buf.size() 為 true,
- 否則 pptr() == pbase() 為 true。
- 若 std::ios_base::in 在 mode 中設定,則 eback() 指向 buf.front(),且 gptr() == eback() && egptr() == eback() + buf.size() 為 true。
[編輯] 註解
出於效率原因,當 buf 被封裝在 std::basic_stringbuf
中時,流緩衝區的操作可能會違反 buf 的不變式,例如,透過寫入到 [
buf.data() + buf.size(),
buf.data() + buf.capacity())
範圍內的字元。
所有從 buf 檢索 std::basic_string 的操作都會確保返回的 std::basic_string 值滿足其不變式。
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 1448 | C++98 | 呼叫 init_buf_ptrs() 會使pptr() == pbase() + buf.data() 對於同時用於輸入和輸出的流 |
使 pptr() == pbase() + buf.size() 對於附加流 |