34

std::cout << "hello"うまくいかない状況はありますか?私は ac/c++ コードを持ってstd::coutいますが、定数文字列 ("hello" など) でさえ何も出力しません。

coutストリームを開くことができるかどうかを確認する方法はありますか? good()、 、 ...のようなメンバ関数がいくつかありますがbad()、どれが自分に適しているかわかりません。

4

4 に答える 4

54

必ずストリームをフラッシュしてください。これが必要なのは、出力ストリームがバッファリングされ、自分で手動でフラッシュしない限り、バッファがいつフラッシュされるか保証されないためです。

std::cout << "Hello" << std::endl;

std::endl改行を出力し、ストリームをフラッシュします。または、単にフラッシュを行いますstd::flush。フラッシュは、ストリームのメンバー関数を使用して行うこともできます。

std::cout.flush();
于 2013-02-13T16:32:08.630 に答える
6

std::coutバッファリングが原因で機能しない可能性があります(書いているものは、出力ではなくバッファになりstd::coutます)。

次のいずれかを実行できます。

  • 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 番目の解決策は機能しない可能性があります)。

于 2013-02-13T16:40:45.543 に答える