std::basic_stringbuf<CharT,Traits,Allocator>::init_buf_ptrs
From cppreference.com
< cpp | io | basic stringbuf
| void init_buf_ptrs(); |
(説明用*) | |
buf と mode に基づいて、入力および出力シーケンスを初期化します。 buf と mode は、*this の公開専用メンバー変数です。
この関数が返った直後
- mode に std::ios_base::out が設定されている場合、pbase() は buf.front() を指し、epptr() >= pbase() + buf.size() は true です。
- さらに、mode に std::ios_base::ate が設定されている場合、pptr() == pbase() + buf.size() は true です。
- それ以外の場合、pptr() == pbase() は true です。
- mode に std::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() 追記ストリームの場合 |