●C++編(言語解説) 第2章 出力ストリーム

'2006/11/18 誤植修正。

このページは移転予定です。移転先はこちらです

○ストリーム

ストリームという概念は、C言語編第34章 でも登場しました。この概念のおかげで、プログラマは、データをどこから入力し、どこへ出力するのかという ことを意識する必要がなくなります。画面に出力するのも、プリンタから出力するのも同じように扱える訳です。

入力に関するストリームを入力ストリーム、出力に関するストリームを 出力ストリームと言います。この章では出力ストリームというタイトルを付けて いますが、何のことはなく、第1章でみた文字の出力のことです。

○出力ストリーム

C++では、 cout を使って出力処理を行えます。例えば、次のようにコードを書けば、画面に"Test"と出力されます。

std::cout << "Test";

これは、C言語で次のように書くのと同じことです。

fprintf( stdout, "Test" );

つまり、標準出力(通常は画面)に対して出力を行うということです。

C++の出力ストリームは、非常に強力です。というのも、printf関数等を使う場合と異なり、出力するデータの 型を問わないからです。例えば、次のように書くのはどれも有効です。

std::cout << 123;
std::cout << 1.23;
std::cout << 'a';

更に、次のように出力するデータを、次々に連結できます。

std::cout << 100 << '+' << 100 << "=?\n";

改行に関しては、C言語同様'\n'を使います。これを出力しない限り、改行は発生しません (第4章で見るstd::endlを使う場合は別)。また、もちろん変数の値や、ポインタを 間接参照した結果を出力することも可能です。

std::cout << num;
std::cout << p->member;

このように、データの種類に応じて、フォーマット指定子をする必要がありません。これは、フォーマット 指定を間違えることがないので、printf関数よりも遥かに安全です。

○C言語との連携

C++での出力処理には、std::coutを使うように統一すべきです。もし、C++のiostreamとC言語のstdio.hとを 同時に使わざるを得ない場合には、main関数の最初の部分に(実際に入出力処理を行うより前に)以下のコード を記述しておきます。

std::ios::sync_with_stdio();

これがないと、プログラムが正しく動作しない可能性があります。


C++編(言語解説)のトップページに戻る

サイトのトップページに戻る