C++教科書/標準ライブラリ編/<ios>の章

編集

はじめに

編集

<ios> ヘッダーファイルは、C++標準ライブラリの重要な構成要素であり、入出力 (I/O) ストリームとストリームマニピュレータに関する宣言を提供します。これらのストリームは、ファイル、コンソール、メモリバッファなど、さまざまなデータソースとのやり取りを可能にします。

キーインクルージョン

編集
#include <iosfwd>  // I/O ストリームクラスの前方参照宣言

クラス

編集

ios_base

編集
  • すべての I/O ストリームの基底クラスとして機能します。
  • 書式設定フラグ (例: boolalphashowpoint) と I/O 例外 (io_errc) を管理します。
  • 次のようなメンバー関数を提供します:
    • 書式設定フラグの設定/照会 (flags(), flags(fmtfl), setf())
    • ストリーム精度 (precision()) と幅 (width()) の設定/照会
    • ストリームロケールの設定/取得 (imbue(), getloc())
    • エラー処理とコールバック (register_callback())

ios_base::failure (ios_base 内にネスト)

編集
  • I/O ストリームエラー専用の例外クラスです。
  • std::system_error から継承します。

ios_base::Init (ios_base 内にネスト)

編集
  • 初期化目的のプライベートヘルパークラスです。
  • 直接の使用を意図したものではありません。

fpos<StateT> (テンプレート)

編集
  • ストリームまたはファイル内の絶対位置を表します。

basic_ios<CharT, Traits = char_traits<CharT>> (テンプレート)

編集
  • 基本的な I/O ストリームクラステンプレートです。
  • 2つのテンプレートパラメータを受け取ります:
    • CharT: 文字型 (例: charwchar_t)
    • Traits: 文字特性型 (例: std::char_traits<CharT>)
  • ios_base から継承します。
  • 次のようなメンバー関数を提供します:
    • ストリーム状態管理 (rdstate(), clear(), setstate())
    • エラーチェック (good(), eof(), fail(), bad())
    • 例外処理 (exceptions(), exceptions(iostate))
    • ストリームバッファの関連付け (rdbuf(), rdbuf(basic_streambuf*))
    • ストリーム操作 (copyfmt())
    • 文字関連操作 (fill(), imbue(), narrow(), widen())

ストリームマニピュレータ

編集

<ios> ヘッダーにあるこれらの関数は、I/O ストリームの書式設定と動作を変更します。通常、挿入 (<<) と抽出 (>>) 演算子とともに使用されます。以下に、よく使用されるマニピュレータをいくつか示します:

  • boolalpha: ブールのテキスト表現と数値表現を切り替えます (例: true1)。
  • showbase: 数値出力にベースインジケータをプレフィックスします (例: 16進数の場合 0x)。
  • showpoint: 浮動小数点出力に常に小数点を含めます。
  • showpos: 正の数字にプラス記号 (+) をプレフィックスするかどうかを制御します。
  • skipws: 入力時に先行する空白をスキップします。
  • uppercase: 一部の出力形式で文字が大文字になるようにします。
  • unitbuf: 各操作後に出力ストリームをフラッシュします。

補足

編集
  • <ios> ヘッダーは、I/O エラー処理用の make_error_code() および make_error_condition() などのヘルパー関数も定義します。
  • iostream_category() 関数は、I/O ストリームエラーカテゴリを識別するために使用されます。