std::cout << "hello"
が動作しない場合はありますか?私はc/C++コードを持っていますが、std::cout
は何も印刷しません。定数文字列( "hello"など)でさえ印刷されません。std :: coutは印刷されません
cout
がストリームを開くことができるかどうかを確認する方法はありますか? good()
、bad()
のようないくつかのメンバー機能がありますが、どちらが私に適しているか分かりません。
std::cout << "hello"
が動作しない場合はありますか?私はc/C++コードを持っていますが、std::cout
は何も印刷しません。定数文字列( "hello"など)でさえ印刷されません。std :: coutは印刷されません
cout
がストリームを開くことができるかどうかを確認する方法はありますか? good()
、bad()
のようないくつかのメンバー機能がありますが、どちらが私に適しているか分かりません。
ストリームを必ずフラッシュしてください。これは、出力ストリームがバッファされているため、手動でバッファをフラッシュしない限りバッファがフラッシュされるまで保証されないために必要です。
std::cout << "Hello" << std::endl;
std::endl
意志出力改行やストリームをフラッシュします。あるいは、std::flush
はとなります。はフラッシュします。フラッシングは、ストリームのメンバ関数を使用して行うことができます。
std::cout.flush();
std::cout
が原因バッファリングに動作しない可能性が高い(あなたが書いているものstd::cout
代わりの出力でのバッファで終わります)。
あなたはこれらの事の1行うことができます。明示的に
フラッシュstd::cout
:
std::cout << "test" << std::flush; // std::flush is in <iostream>
std::cout << "test";
std::cout.flush(); // explicitly flush here
std::cout << "test" << std::endl; // endl sends newline char(s) and then flushes
代わりにstd::cerr
を使用してください。 std::cerr
はバッファされていませんが、別のストリームを使用します(つまり、「コンソールのメッセージを見る」以外のものに興味がある場合は、2番目の解決策がうまくいかない場合があります)。
誰も私のコードで働いていませんでした。 –
効果的にあなたがこの呼び出すことができますバッファリングを無効にするには:または
std::setvbuf(stdout, NULL, _IONBF, 0);
を、あなたのプログラムを呼び出すと、コマンドラインで出力バッファリングを無効にすることができます
stdbuf -o 0 ./yourprogram --yourargs
は、この点に注意してくださいパフォーマンスの理由から通常は行われません。
ああ、バッファリングされた出力ですが、芸術は無情で残酷な賢者です。 – WhozCraig
Cに 'std :: cout'はありません。 –
ウィンドウシステムでは、ウィンドウがあり、OSがあなたのウィンドウのどれに出力するのかわからないので、' std :: cout'は実装されないかもしれません。 –