ここでは、組み込みストリームに対する簡単な入出力を紹介します。入出力ストリーム機能では、書式設定ストリームの入出力のためにシフト演算子を定義します。出力演算子はシフト演算子 operator<<() であり、挿入子とも呼びます。
cout << "result: " << x << '\n';
入力は別のシフト演算子 operator>>() で行います。この演算子は、抽出子とも呼びます。
cin >> x >> y;
いずれの演算子も、標準 C++ ライブラリに定義された一部の型と同様に、C++ に組み込まれたすべての型にオーバーロードされます。たとえば、bool、char、int、long、float、double、string などの挿入子と抽出子があります。ストリームに対して値の挿入や抽出を行うと、値の型に基づいて、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 月