Namespaces
Variants

std:: basic_streambuf

From cppreference.net
< cpp ‎ | io
ヘッダーで定義 <streambuf>
template <

class CharT,
class Traits = std:: char_traits < CharT >

> class basic_streambuf ;

basic_streambuf クラスは、文字シーケンスへの入力と出力を制御します。これには以下が含まれ、アクセスを提供します

  1. controlled character sequence (制御文字シーケンス)、別名 buffer (バッファ)は、 input sequence (入力シーケンス、別名 get area (取得領域))を含み、入力操作のバッファリングを行う場合と/または output sequence (出力シーケンス、別名 put area (格納領域))を含み、出力操作のバッファリングを行う場合がある。
  2. 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つのポインタによって記述されます:

  1. beginning pointer は、常にバッファの最下位要素を指します。
  2. next pointer は、次に読み取りまたは書き込みの対象となる要素を指します。
  3. 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 から派生します。

std-streambuf.svg

一般的な文字型に対するいくつかの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)