名前空間
変種
操作

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

From cppreference.com
< cpp‎ | io‎ | basic stringbuf
 
 
 
 
void init_buf_ptrs();
(説明用*)

bufmode に基づいて、入力および出力シーケンスを初期化します。 bufmode は、*this公開専用メンバー変数です。

この関数が返った直後

  • modestd::ios_base::out が設定されている場合、pbase()buf.front() を指し、epptr() >= pbase() + buf.size()true です。
    • さらに、modestd::ios_base::ate が設定されている場合、pptr() == pbase() + buf.size()true です。
    • それ以外の場合、pptr() == pbase()true です。
  • modestd::ios_base::in が設定されている場合、eback()buf.front() を指し、gptr() == eback() && egptr() == eback() + buf.size()true です。

[編集] 注釈

効率上の理由から、ストリームバッファ操作は、std::basic_stringbuf にカプセル化されている間、buf の不変条件を破る可能性があります。例えば、範囲 [buf.data() + buf.size()buf.data() + buf.capacity()) の文字への書き込みなどです。

buf から std::basic_string を取得するすべての操作は、返される値に対して std::basic_string の不変条件が満たされることを保証します。

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 1448 C++98 init_buf_ptrs() の呼び出しは、
pptr() == pbase() + buf.data()
入出力ストリームの両方であるストリームに対して
作成します
pptr() == pbase() + buf.size()
追記ストリームの場合
English 日本語 中文(简体) 中文(繁體)