第1章 画面への出力


さて、今回は標準出力ストリームについてします。 通常は、標準出力は画面です。この標準出力というのが 結構くせ者です。まあ、今のうちはイコール画面 と覚えておいてそう大きな間違いはありません。 では、早速簡単なプログラムを書いて説明します。

Cのときおなじみのstdio.hのかわりに、iostream.hをインクルードします。 そして、coutは<<演算子(出力ストリーム演算子)の右側にあるモノを 標準出力に送ります。(あまり正しくない表現です)右側のモノは、文字列に 限らずなんでもOKです。

はい。結果は左の通りです。Cでは、printf("私の名前は..."); と書きますね。coutは見た目の通り関数ではなく変数みたいなモノです。

左のように、文字列やら、文字やら、数値やらをごちゃごちゃに出力できます。 こりゃ便利ですね。でも、文字列を出力するときはポインタを使っていることに 注意してください。

あーきちんと表示されていますね。 こりゃ、Cよりランチンですね。

ところで、この章の最初の方で「標準出力はほぼ画面」 と言うような意味のことを書きました。「ほぼ」とは 「だいたい」という意味です。

エーィッ!回りくどいな!一体何が言いたい!?

はい、標準出力がいつも画面とは決まっていないと言うことです。 MSDOSには、「リダイレクト」と言うことがあります。 これは、流れ(ストリーム)の方向を変えるという意味です。 (多分ね)この章で2番目に作ったプログラムの名前を outp02.exeとします。MSDOSのプロンプトでこれを 実行すると、上のような結果が出るでしょう。では、次の ように実行してみてください。

outp02.exe > outp02.txt

あれ、何も表示されないぞ!!!

では、outp02.exeのあるディレクトリーの中身を見てみましょう。 DOSのdirコマンドでもいいですし、マイコンピュータとか エクスプローラを使ってのぞいてみてください。

あれ、いつの間にか「outp02.txt」というファイルが できている!

そのファイルをテキストファイルとして読んでみてください。 DOSのtypeコマンドでもいいし、メモ帳でもいいです。

あ、そうか。画面に表示されるべきモノがファイルの中に表示 されたんだ。

はい、その通りです。これが「リダイレクト」というもので CやC++の機能ではなくMSDOSの機能のひとつです。 ファイルだけでなく、プリンターに出力することもできます。 従って、printfやcoutの出力がいつも画面であると 思っているととんだ失敗をすることがあります。 エラー表示を標準出力にだすプログラムでは、これがリダイレクト されているとユーザーに伝わらないことがあります。

じゃ、どーすればいいの?

はい。標準エラーストリーム(stderr)というのがあります。これは 常に画面です。C++では、coutのかわりにcerrを使えばOKです。 C言語の場合はどうしたらよいでしょう。ヘルプで調べてみてください。


[C++Index] [総合Index] [Next Chapter]

Update Dec/30/1996 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。