2章 出力ストリーム

http://www.geocities.jp/ky_webid/cpp/language/002.html

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

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

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

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

へー、なるほど。printfだと常に型を意識しないとダメでしたが、C++のcoutの場合はまったく意識する必要がないということですね。

見た目が若干キモイですが、便利ではありますね。

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

std::ios::sync_with_stdio();

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

何故、これが必要なのかが気になりますね。ざっと調べてみてもおまじない程度のことしか書かれていませんでした。

とりあえず練習がてらcoutを使ってみました。

#include <iostream>

int main() {
    std::cout << 100 << '+' << 200 << '=' << 100 + 200;
    return 0;
}
$ main
100+200=300

でもあれですね。型を意識しなくてもいいというのは確かに凄く便利なんですが、いちいち<<で繋いでいくのが面倒ですね・・・。あとどういうフォーマットで出力されるのかがパッとみて分かりにくいです。

printfであればパッとみて何を出力したいのか一目瞭然です。

printf("%d+%d=%d",100,200,100+200);

文字列が繋がっているので分かりやすいです。

printfみたいな仕様で且つ型を意識しなくても良いような関数があれば凄く便利だと思うのですがC++では実現できないということなんでしょうか。

とりあえずもう少し勉強してみます。