C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++のcerrストリームとcoutストリームの違いは何ですか?


coutはstdoutストリームのオブジェクトであり、cerrはstderrストリームのオブジェクトです。

stdoutとstderrは、どちらもデフォルトでコンソール出力を参照しますが、異なるストリームです。それらの1つ(例:program.exe> out.txt)をリダイレクト(パイピング)しても、もう1つには影響しません。

通常、実際のプログラム出力にはstdoutを使用する必要がありますが、ユーザーが出力をファイルにリダイレクトした場合でも情報メッセージが印刷されるように、すべての情報とエラーメッセージをstderrに出力する必要があります。画面であり、出力ファイルではありません。


  1. C ++のドット(。)演算子と->の違いは何ですか?

    ドットと矢印の演算子は、どちらもC++でクラスのメンバーにアクセスするために使用されます。それらはさまざまなシナリオで使用されます。 C ++では、class、struct、またはunionとして宣言された型は、「クラス型」と見なされます。したがって、以下は3つすべてを指します。 a.bは、bがオブジェクトのメンバー(またはオブジェクトへの参照[1])である場合にのみ使用されます。したがって、a.bの場合、aは常にクラスの実際のオブジェクト(またはオブジェクトへの参照)になります。 a→bは基本的に(* a).bの省略表記です。つまり、aがオブジェクトへのポインタである場合、a→bはポイ

  2. C ++の#defineとconstキーワードの違いは何ですか?

    #defineディレクティブはプリプロセッサディレクティブです。プリプロセッサは、コンパイラがマクロを認識する前に、これらのマクロを本体に置き換えます。これは、ソースコードの自動検索と置換と考えてください。 const変数宣言は、言語で実際の変数を宣言します。これは、実際の変数のように使用できます。アドレスを取得し、渡し、キャストし、変換します。 コンパイラの最適化がないと、さまざまなケースでこれらの両方に関連するメモリ割り当ての隠れたコストが発生します。しかし、適切に最適化すれば、それらはほぼ同じになります。また、プリプロセッサマクロにはスコープがありませんが、const値にはスコープがあ