名稱空間
變體
操作

std::basic_stringbuf<CharT,Traits,Allocator>::init_buf_ptrs

來自 cppreference.com
< cpp‎ | io‎ | basic stringbuf
 
 
 
 
void init_buf_ptrs();
(僅作說明*)

根據 mode,從 buf 初始化輸入和輸出序列。bufmode*this僅用於闡釋的資料成員

此函式返回後,立即

  • std::ios_base::outmode 中設定,則 pbase() 指向 buf.front(),且 epptr() >= pbase() + buf.size()true
    • 此外,若 std::ios_base::atemode 中設定,則 pptr() == pbase() + buf.size()true
    • 否則 pptr() == pbase()true
  • std::ios_base::inmode 中設定,則 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()
對於附加流