std :: cerrとstd :: coutの違い

1. cerrは、標準エラーに関連付けられたostreamオブジェクトであり、通常、標準出力と同じデバイスに書き込まれます。デフォルトでは、cerrに書き込まれたデータはバッファリングされません。Cerrは通常、通常のロジックの一部ではないエラーメッセージやその他の出力コンテンツを出力するために使用されます。

2. coutは、デフォルトで表示される標準出力ストリームに対応します。これは、リダイレクト可能なバッファリングされた出力です。
cerrは標準エラーストリームに対応し、エラーメッセージを表示するために使用されます。デフォルトでは、標準出力ストリームに関連付けられていますが、バッファリングされていません。つまり、表示される前にバッファまたは改行を待たずに、エラーメッセージをディスプレイに直接送信できます。通常の状況では、リダイレクトされません。

3.コンセプト
std :: cerr(コンソールエラー)はISO C ++標準エラー出力ストリームであり、ISOC標準ライブラリのstderrに対応します。
std :: coutとは異なり、ISO C ++では、cerrが初期化されるときに、cerr.flags()とunitbufがゼロ以外であり(各出力操作後にストリームが更新されるようにするため)、cerr.tie()が&coutを返す必要があります。[1]つまり、cerrはデフォルトでバッファリングなしでcoutと同期されます。
cerrとcoutEdit cerrの違いは
、エラーメッセージを表示するために使用される標準エラーストリームに対応しています。デフォルトでは、標準出力ストリームに関連付けられていますが、バッファリングされていません。つまり、表示される前にバッファまたは改行を待たずに、エラーメッセージをディスプレイに直接送信できます。通常の状況では、リダイレクトされません。

4. cerrを使用する理由
たとえば、プログラムでコールスタックが不足するという脅威に遭遇します(無限、終了せずに再帰)。
エラーメッセージを保存するためにどこにメモリを借りているとおっしゃいましたか?
だから、cerrがあります。その目的は、最も必要な緊急事態で出力機能のサポートを取得することです。バッファの目的は、画面の更新回数を減らすことです。たとえば、プログラムは聖書に記事を出力します。バッファリングを行わないと、文字が書き込まれるたびに文字が出力され、画面がスワイプされます。バッファリングを使用すると、画面に「同時に」表示されるいくつかの文が表示されます(メモリからビデオメモリへ、そして画面を更新します)。

4、

たとえば、次のコードは、test.exe
// test.cpp
#include
using namespace std;
int main()
{ cout <<“ hello world—cout” << endl; cerr <<“ hello world—cerrを生成するようにコンパイルされています。” << endl; return 0; }コマンドラインモードで次のコマンドを入力します   。test>> cout.txt実行結果は次のとおりです。helloworld —cout」が生成されたcout.txtファイルに出力され、「hello」は同時にディスプレイに出力されます。world-cerr」は、coutの出力をファイルにリダイレクトできること意味し、cerrはディスプレイに出力する必要があります。









おすすめ

転載: blog.csdn.net/weixin_41169280/article/details/110123002