GeezerVison is showing cpprefjp.github.io — std::basic_streambuf - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月18日 23時56分29秒 (JST)
rotarymars
が更新
履歴
編集
class template
<streambuf>
std:: basic_streambuf
namespace std {
template < class CharT , class Traits = char_traits < CharT >>
class basic_streambuf { …… };
using streambuf = basic_streambuf < char > ;
using wstreambuf = basic_streambuf < wchar_t > ;
}
概要
basic_streambufは、ストリームバッファを表現するクラスである。
入力ストリーム・出力ストリームに対して、実際の入出力機能を提供する。
テンプレートパラメータとして文字型を受け取るようになっており、使用を容易にするため、以下のパラメータ設定済みエイリアスが定義されている。
このエイリアスは<streambuf>ヘッダと<iosfwd>ヘッダで定義されている。
エイリアス
説明
対応バージョン
streambuf
char型。ASCII、UTF-8等のマルチバイト文字列や、バイナリデータとして使用する。
wstreambuf
wchar_t型。ワイド文字列として使用する。
ストリームバッファについて
basic_streambufはストリームバッファを取り扱うクラステンプレートである。
ストリームバッファは入力列と出力列からなる。
入力列と出力列それぞれについて、basic_streambufから直接アクセスできる部分は全体の一部分のみである(もちろん、全体がそこに収まっている場合もある)。
その直接アクセスできる部分列はCharTの配列として表現され、先頭・現在位置・終端の3つのポインタで指し示す。
ただし、先頭・現在位置・終端のポインタがすべてnullptrである状態もありえる。
basic_streambufに対するすべての入出力処理は、この3つ組のポインタに対する処理や列全体と部分列の対応を変更する処理として実現されている。
たとえばbasic_filebufでは、ファイルの内容を列全体と見なし、basic_filebuf内でバッファリングしている部分が先頭・現在位置・終端の3つのポインタで指し示されるという構成になる。
メンバ
publicな関数: 主にbasic_streambufを利用する側に対するもの。
protectedな関数: basic_streambufの派生クラスを作る側に対するもの。
protected virtualな関数: basic_streambufの派生クラスを作る際に必要に応じてオーバーライドするもの。
型
名前
説明
対応バージョン
char_type
テンプレート仮引数CharT
int_type
Traits::int_type
pos_type
Traits::pos_type
off_type
Traits::off_type
traits_type
テンプレート仮引数Traits
構築・破棄
名前
説明
対応バージョン
(constructor)
コンストラクタ (protected)
(destructor)
デストラクタ (virtual)
operator=
コピー代入 (protected)
C++11
swap
値の交換 (protected)
C++11
ロケール
バッファとポジショニング
入力
名前
説明
対応バージョン
in_avail
現在の入力列の読み取り可能な文字数を返す。
snextc
入力列の1文字を捨てて、次の文字を読み取る。
sbumpc
入力列の現在位置の文字を読み取り、現在位置を1文字進める。
uflow
入力部分列の領域を消費し切った際の処理 (protected virtual)。
sgetc
入力列の現在位置の文字を読み取る。
underflow
入力部分列の領域を消費し切った際の処理 (protected virtual)。
sgetn
入力列から複数文字を読み取る。
xsgetn
入力列から複数文字を読み取る (protected virtual)。
showmanyc
ブロックせずに読み取れると期待される文字数を得る (protected virtual)。
入力の読み戻し
入力部分列の操作
名前
説明
対応バージョン
eback
入力部分列の先頭へのポインタを返す (protected)。
gptr
入力部分列の現在位置へのポインタを返す (protected)。
egptr
入力部分列の終端へのポインタを返す (protected)。
gbump
入力部分列の現在位置を指定した量だけ進める (protected)。
setg
入力部分列の各ポインタを設定する (protected)。
出力
名前
説明
対応バージョン
sputc
出力列に1文字書き込む。
overflow
出力部分列の領域を消費し切った際の処理 (protected virtual)。
sputn
出力列に複数文字を書き込む。
xsputn
出力列に複数文字を書き込む (protected virtual)。
出力部分列の操作
名前
説明
対応バージョン
pbase
出力部分列の先頭へのポインタを返す (protected)。
pptr
出力部分列の現在位置へのポインタを返す (protected)。
epptr
出力部分列の終端へのポインタを返す (protected)。
pbump
出力部分列の現在位置を指定した量だけ進める (protected)。
setp
出力部分列の各ポインタを設定する (protected)。