std:: basic_streambuf
|
ヘッダーで定義
<streambuf>
|
||
|
template
<
class
CharT,
|
||
basic_streambuf
クラスは、文字シーケンスへの入力と出力を制御します。これには以下が含まれ、アクセスを提供します
- controlled character sequence (制御文字シーケンス)、別名 buffer (バッファ)は、 input sequence (入力シーケンス、別名 get area (取得領域))を含み、入力操作のバッファリングを行う場合と/または output sequence (出力シーケンス、別名 put area (格納領域))を含み、出力操作のバッファリングを行う場合がある。
- associated character sequence (関連文字シーケンス)、別名 source (入力元)または sink (出力先)。これはOS APIを通じてアクセスされる実体(ファイル、TCPソケット、シリアルポート、その他の文字デバイス)である場合もあれば、文字ソースまたはシンクとして解釈可能なオブジェクト( std::vector 、 array 、 string literal )である場合もある。
I/Oストリームオブジェクト
std::basic_istream
および
std::basic_ostream
、ならびにそれらから派生するすべてのオブジェクト(
std::ofstream
、
std::stringstream
など)は、
std::basic_streambuf
を用いて完全に実装されています。
制御対象の文字シーケンスは
CharT
の配列であり、常に関連付けられた文字シーケンスへの部分シーケンス、すなわち「ウィンドウ」を表します。その状態は3つのポインタによって記述されます:
- beginning pointer は、常にバッファの最下位要素を指します。
- next pointer は、次に読み取りまたは書き込みの対象となる要素を指します。
- end pointer は、バッファの終端の1つ後ろを指します。
basic_streambuf
オブジェクトは入力(この場合、先頭、次、終端ポインタで記述されるバッファは
get area
と呼ばれる)、出力(
put area
)、または入出力同時をサポートする可能性があります。後者の場合、6つのポインタが追跡され、これらはすべて同じ文字配列の要素、または2つの個別の配列を指すことがあります。
プットエリアのnextポインタがendポインタより小さい場合、 write position が利用可能です。nextポインタはデリファレンスして代入することができます。
getエリア内でnextポインタがendポインタより小さい場合、 read position が利用可能です。nextポインタはデリファレンスして読み取りが可能です。
ゲットエリアにおいて次のポインタが先頭ポインタより大きい場合、 putback position が利用可能であり、次のポインタをデクリメントし、デリファレンスし、文字をゲットエリアに戻すために代入することができます。
制御シーケンスにおける文字表現とエンコーディングは、関連シーケンスにおける文字表現と異なる場合があり、その場合通常は std::codecvt ロケールファセットを使用して変換が行われます。一般的な例としては、 std::wfstream オブジェクトを通じてアクセスされるUTF-8(または他のマルチバイト)ファイルがあります:制御シーケンスは wchar_t 文字で構成されますが、関連シーケンスはバイトで構成されます。
std::basic_streambuf
基底クラスの典型的な実装は、6つの
CharT*
ポインタと
std::locale
のコピーのみをデータメンバとして保持します。さらに、実装はロケールファセットのキャッシュを保持する場合があり、これらは
imbue()
が呼び出されるたびに無効化されます。
std::basic_filebuf
や
std::basic_stringbuf
などの具象バッファは
std::basic_streambuf
から派生します。
一般的な文字型に対するいくつかのtypedefが提供されています:
|
定義済みヘッダ
<streambuf>
|
|
| 型 | 定義 |
std::streambuf
|
std :: basic_streambuf < char > |
std::wstreambuf
|
std :: basic_streambuf < wchar_t > |
目次 |
メンバー型
| メンバー型 | 定義 |
char_type
|
CharT
|
traits_type
|
Traits
;
Traits::char_type
が
CharT
でない場合、プログラムは不適格となる。
|
int_type
|
Traits::int_type
|
pos_type
|
Traits::pos_type
|
off_type
|
Traits::off_type
|
メンバー関数
|
[virtual]
|
basic_streambuf
オブジェクトを破棄する
(仮想公開メンバ関数) |
ロケール |
|
|
関連付けられたロケールを変更し、
imbue
(
)
を呼び出す
(public member function) |
|
|
関連付けられたロケールのコピーを取得する
(公開メンバ関数) |
|
ポジショニング |
|
|
呼び出す
setbuf
(
)
(公開メンバ関数) |
|
|
seekoff
(
)
を呼び出す
(公開メンバ関数) |
|
|
seekpos
(
)
を呼び出す
(公開メンバ関数) |
|
|
sync
(
)
を呼び出す
(公開メンバ関数) |
|
面積を取得 |
|
|
ゲット領域で直ちに利用可能な文字数を取得する
(公開メンバ関数) |
|
|
入力シーケンスを進め、再度進めずに1文字を読み取る
(公開メンバ関数) |
|
|
(removed in C++17)
|
入力シーケンスから1文字を読み取り、シーケンスを進める
(公開メンバ関数) |
|
入力シーケンスから1文字を読み取り、シーケンスを進めない
(公開メンバ関数) |
|
|
xsgetn
(
)
を呼び出す
(公開メンバ関数) |
|
Put領域 |
|
|
出力領域に1文字を書き込み、次のポインタを進める
(公開メンバ関数) |
|
|
xsputn
(
)
を呼び出す
(公開メンバ関数) |
|
Putback |
|
|
入力シーケンスに1文字を戻す
(公開メンバ関数) |
|
|
入力シーケンスの次のポインタを1つ戻す
(公開メンバ関数) |
|
保護メンバー関数 |
|
basic_streambuf
オブジェクトを構築する
(protected member function) |
|
|
(C++11)
|
basic_streambuf
オブジェクトを置き換える
(protected member function) |
|
(C++11)
|
2つの
basic_streambuf
オブジェクトを交換する
(protected メンバー関数) |
ロケール |
|
|
[virtual]
|
関連付けられたロケールの変更に反応する
(仮想 protected メンバー関数) |
配置 |
|
|
[virtual]
|
許可された場合、バッファをユーザー定義配列で置き換える
(仮想 protected メンバー関数) |
|
[virtual]
|
入力シーケンス、出力シーケンス、またはその両方の次のポインタを相対アドレッシングを使用して再配置する
(仮想保護メンバ関数) |
|
[virtual]
|
入力シーケンス、出力シーケンス、またはその両方の次のポインタを絶対アドレス指定を使用して再配置する
(仮想 protected メンバ関数) |
|
[virtual]
|
関連付けられた文字シーケンスとバッファを同期する
(仮想 protected メンバ関数) |
面積を取得 |
|
|
[virtual]
|
関連付けられた入力シーケンスで利用可能な文字数を取得する(既知の場合)
(仮想 protected メンバー関数) |
|
[virtual]
|
関連付けられた入力シーケンスから文字を読み取り、ゲット領域に格納する
(仮想 protected メンバ関数) |
|
[virtual]
|
関連付けられた入力シーケンスから文字を読み取り、ゲット領域へ転送し、次ポインタを進める
(仮想 protected メンバ関数) |
|
[virtual]
|
入力シーケンスから複数の文字を読み込む
(仮想 protected メンバー関数) |
|
取得領域の先頭、現在の文字、および終端へのポインタを返す
(protected member function) |
|
|
入力シーケンスの次ポインタを進める
(protected member function) |
|
|
入力シーケンスの先頭、次、および終了ポインタを再配置する
(protected member function) |
|
Putエリア |
|
|
[virtual]
|
出力シーケンスに複数の文字を書き込む
(仮想 protected メンバー関数) |
|
[virtual]
|
出力シーケンスに文字を書き込む(put領域から)
(仮想保護メンバ関数) |
|
出力領域の先頭、現在の文字、および終端へのポインタを返す
(protected member function) |
|
|
出力シーケンスの次ポインタを進める
(protected member function) |
|
|
出力シーケンスの先頭、次、および終了ポインタを再配置する
(protected member function) |
|
Putback |
|
|
[virtual]
|
入力シーケンスに文字を戻し、入力シーケンスを変更する可能性がある
(仮想 protected メンバー関数) |
関連項目
|
C I/Oストリームを制御するために必要なすべての情報を保持できるオブジェクト型
(typedef) |