namespace std {
template<class CharT, class Traits = char_traits<CharT>>
class basic_ostream : virtual public basic_ios<CharT, Traits> { …… };
using ostream = basic_ostream<char>;
using wostream = basic_ostream<wchar_t>;
}
概要
basic_ostream
は、出力ストリームを表現するクラスである。
すなわち、rdbuf()
が指し示すストリームバッファオブジェクトに対する書き込み操作を提供する。
各種の出力関数——特に<<
演算子——がクラスのメンバ関数・非メンバ関数として定義されている。
このため、ユーザーコードで入力処理を実装する際には、basic_ostream
、あるいはそれに対する別名であるostream
やwostream
などの型への参照を実引数として受け取るようにすると良い。
テンプレートパラメータとして文字型を受け取るようになっており、使用を容易にするため、以下のパラメータ設定済みエイリアスが定義されている。
このエイリアスは<ostream>
ヘッダと<iosfwd>
ヘッダで定義されている。
エイリアス | 説明 | 対応バージョン |
---|---|---|
ostream |
char 型。ASCII、UTF-8等のマルチバイト文字列や、バイナリデータとして使用する。 |
|
wostream |
wchar_t 型。ワイド文字列として使用する。 |
書式化出力関数と非書式化出力関数
basic_ostream
での出力操作は、書式化出力関数と非書式化出力関数の2種類に分類される。
書式化出力関数と非書式化出力関数の効果
注意:書式化出力関数と非書式化出力関数すべてについて、「効果」の項目は以下の処理を前提として記載している。
書式化出力関数・非書式化出力関数は、出力処理に先立ってsentry
オブジェクトを構築し、関数から脱出する前に破棄する。
構築した sentry
オブジェクトが operator bool
関数で true
に変換できる場合のみ、実際の出力処理(各関数の「効果」として記載した処理)が実行される。
(書式化出力関数のみ)operator bool
関数の結果が false
であったら、setstate(ios_base::badbit)
を呼び出す。
関数内部で例外が送出された場合、ios_base::badbit
を設定する。
そして、(exceptions() & badbit) != 0
であれば例外を再送出する。
メンバ
基底クラスである ios_base
とbasic_ios
も参照のこと。
型
名前 | 説明 | 対応バージョン |
---|---|---|
sentry |
出力操作の前処理・後処理 |
構築・破棄
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | |
(destructor) |
デストラクタ |
- コピーコンストラクタとコピー代入演算子はdelete定義されている。
- ムーブコンストラクタ・ムーブ代入演算子と
swap
はprotectedで定義されている。
出力処理
名前 | 説明 | 対応バージョン |
---|---|---|
operator<< |
書式化出力・マニピュレータの実行 | |
put |
文字の出力 | |
write |
文字列・バイト列の出力 | |
flush |
ストリームバッファのフラッシュ |
<<
演算子のほとんどは書式化出力関数である。
その他のメンバ関数は非書式化出力関数である。
シーク
名前 | 説明 | 対応バージョン |
---|---|---|
tellp |
現在の読み取り位置を取得する | |
seekp |
読み取り位置を移動する |
protectedメンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | |
operator= |
代入 | C++11 |
swap |
値の交換 | C++11 |
非メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
operator<< |
文字・文字列の書式化出力、および、右辺値ストリームへの出力 |