ホームページ > バックエンド開発 > C++ > `std::cout` が印刷されないのはなぜですか?

`std::cout` が印刷されないのはなぜですか?

Linda Hamilton
リリース: 2024-12-13 04:50:10
オリジナル
723 人が閲覧しました

Why Doesn't My `std::cout` Print?

std::cout が印刷されない場合: バッファリングされたストリームのトラブルシューティング

C では、標準出力ストリーム (std::cout) がバッファリングされます。実際の出力デバイスに送信する前にデータを蓄積します。この動作により、std::cout が何も表示されないという予期せぬ状況が発生する可能性があります。

フラッシュの重要性

データがすぐに表示されるようにするには、ストリームをフラッシュすることが不可欠です。それに書き込んだ後。これは、改行文字の出力とストリームのフラッシュの両方を行う std::endl ストリーム マニピュレータを使用して実現できます。

std::cout << "Hello" << std::endl;
ログイン後にコピー

または、std::flush ストリーム マニピュレータを使用して、ストリームをフラッシュすることもできます。追加の文字を出力しています。

std::cout << "Hello";
std::cout.flush();
ログイン後にコピー

ストリーム ステータスを確認しています

場合フラッシュしても問題は解決されません。ストリームのステータスをチェックして、ストリームが動作しているかどうかを判断できます。この目的には、次のようないくつかのメンバー関数が使用できます。

  • std::ios::good: ストリームが使用できる場合は true を返します。
  • std::ios::bad: 致命的なエラーが発生した場合に true を返します。
  • std::ios::fail: 致命的ではないエラーが発生した場合は true を返します。

検討してください次のプログラム:

#include 

int main() {
  std::cout << "Hello" << std::endl;
  return 0;
}
ログイン後にコピー

プログラムを実行すると、「Hello」が表示されます。期待通りに表示されました。ただし、std::endl フラッシュが削除された場合、プログラムが終了するまで出力が表示されない可能性があります。

以上が`std::cout` が印刷されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート