重複の可能性:
C++でのprintfとcout
coutとprintfの違いは何ですか?
coutは自動的にキャストを作成し、印刷しようとしている変数のタイプを見つけます。したがって、次のようなことができます。
int myint = 5;
cout << myint;
そして、coutはmyintがintであることを検出し、それを出力します。printfでは、印刷しようとしている変数のタイプを指定する必要があります。
int myint = 5;
printf("%d", myint);
また、coutはprintfよりも低速です(型検出を行うため...)が、ほとんどの実際のアプリケーションでは、パフォーマンスの違いに気付くことはありません。
printf
は、ライブラリの標準出力であるstdio
CのIOライブラリにデータを出力するために使用される関数です。これは主にレガシーの理由でC ++に保持されますが、それでも役立つ場合もあります。
cout
iostreamsライブラリからのC++ストリームです(特に、として定義されていますostream &
)。iostreamsライブラリは、IOを実行するためのネイティブC++の方法です。
一般に、古いprintfのような関数よりもiostreamを使用する方が簡単で安全です(フォーマット文字列+ varargsの代わりに演算子のオーバーロードのおかげで<<
)。これはC ++の「慣用的な」方法でIOを実行するため、特定の場合を除いて使用する必要があります。そうする必要はありません。
基本的に、cout
はC ++の方法で標準出力に出力し、printf
はCの方法です。
C ++ iostream(そのうちのcout
1つ)はC ++クラスに基づいており、新しいクラスを処理するために拡張可能です。つまり、というクラスを作成してから、次の操作を実行できますfoo
。
foo bar;
std::cout << bar << std::endl;
一方、printf
新しい型を処理することはできません。printf
その型の各コンポーネントを呼び出す関数を作成する必要があります。各コンポーネントは、すでに既知の型printf
(int
またはなどchar *
)です。
printf
C++コードで使用する言い訳は本当にありません。私はいつも、C ++を使用する場合は、旧世界ではなく、C ++を使用する必要があると言っています:-)使用する場合は、printf
Cを使用してください。
クラスをiostreamで使用できるようにする方法の例を探している場合は、それを実行するコードに関する以前の質問に対して私が提供した回答を参照してください。
http://forums.devshed.com/c-programming-42/difference-between-cout-and-printf-38373.htmlから取得
coutは、C++のiostreamのオブジェクトです。C ++を使用している場合は、coutを使用すると、うまく機能します。printfは同じことをしている間、標準出力に出力するフォーマット機能です。これは主にCで使用されます。
したがって、printfは、文字列をフォーマットできるため、ある意味でcoutの兄貴です。