Rogue Wave バナー
前へマニュアルの先頭へ目次次へ

7.2 入出力演算子

ここでは、組み込みストリームに対する簡単な入出力を紹介します。入出力ストリーム機能では、書式設定ストリームの入出力のためにシフト演算子を定義します。出力演算子はシフト演算子 operator<<() であり、挿入子とも呼びます。

cout << "result: " << x << '\n';

入力は別のシフト演算子 operator>>() で行います。この演算子は、抽出子とも呼びます。

cin >> x >> y;

いずれの演算子も、標準 C++ ライブラリに定義された一部の型と同様に、C++ に組み込まれたすべての型にオーバーロードされます。たとえば、boolcharintlongfloatdoublestring などの挿入子と抽出子があります。ストリームに対して値の挿入や抽出を行うと、値の型に基づいて、C++ 関数 overload resolution によって正しい抽出演算子が選択されます。これが、C++ 入出力ストリーム型が C stdio より安全で優れている点です (第 6 章参照)。

次の例のように、1 つの式に複数の単位を出力することができます。

cout << "result: " << x;

これは、次の式と等価です。

(cout.operator<<("result: ")).operator<<(x);

その理由は、シフト演算子ごとに各ストリームの参照が返るからです。組み込み型のほとんどすべてのシフト演算子は、各ストリームクラスのメンバー関数です。2 その定義は、次のパターンに従って行われます。

template<class charT, class traits>
basic_istream<charT, traits>& 
basic_istream<charT, traits>::operator>>(type& x)
{
  // x を読み取る
  return *this;
}

そして

template<class charT, class traits>
basic_ostream<charT, traits>&
basic_ostream<charT, traits>::operator<<(type x)
{
  // x を書き込む
  return *this;
}

どのような状況にも十分ということはありませんが、このような単純な単位の入出力は、場合によっては便利です。たとえば、出力の書式設定や、入力の構文解析の方法をさまざまに変更することができます。入出力ストリームでは、その入出力演算子の書式設定機能を、さまざまな方法で制御することができます。入出力ストリームには、次の設定を行うことができます。

その他さまざまな書式設定オプション。

書式設定の制御をする機構は次の 2 つです。

書式の制御は、主にストリームの書式状態で行います。次の節で例を示します。


前へマニュアルの先頭へ目次次へ

Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。


OEM リリース, 1998 年 6 月