最終更新日時:
が更新

履歴 編集

class template
<ostream>

std::basic_ostream

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、あるいはそれに対する別名であるostreamwostreamなどの型への参照を実引数として受け取るようにすると良い。

テンプレートパラメータとして文字型を受け取るようになっており、使用を容易にするため、以下のパラメータ設定済みエイリアスが定義されている。 このエイリアスは<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_basebasic_ios も参照のこと。

名前 説明 対応バージョン
sentry 出力操作の前処理・後処理

構築・破棄

名前 説明 対応バージョン
(constructor) コンストラクタ
(destructor) デストラクタ
  • コピーコンストラクタとコピー代入演算子はdelete定義されている。
  • ムーブコンストラクタ・ムーブ代入演算子とswapはprotectedで定義されている。

出力処理

名前 説明 対応バージョン
operator<< 書式化出力・マニピュレータの実行
put 文字の出力
write 文字列・バイト列の出力
flush ストリームバッファのフラッシュ

<<演算子のほとんどは書式化出力関数である。 その他のメンバ関数は非書式化出力関数である。

シーク

名前 説明 対応バージョン
tellp 現在の読み取り位置を取得する
seekp 読み取り位置を移動する

protectedメンバ関数

名前 説明 対応バージョン
(constructor) コンストラクタ
operator= 代入 C++11
swap 値の交換 C++11

非メンバ関数

名前 説明 対応バージョン
operator<< 文字・文字列の書式化出力、および、右辺値ストリームへの出力

参照