1

私は最近、ソケットを含む単純な C++ プログラムを作成していました。C++ を使用してからしばらく経っていたので、クラスが適切に構築されていることを確認するために簡単な健全性チェックを行っていました。その時、私は非常に奇妙なエラーに遭遇しました。コンソールへの出力がない場合、\nまたはendl出力の最後にある場合、コンソールに書き込みません。例えば:

これはコンソールに出力されません

class Server{
    public:
        Server(){
            std::cout << "STARTING SERVER";
        }
};

これは次のようになります。

class Server{
    public:
        Server(){
            std::cout << "STARTING SERVER" << std::endl;
        }
};

どちらも を使用して作成されましたServer server;。これは私のコンピューターの単なる「幽霊」でしたか、それとも以前に誰かがこれに遭遇したことがありますか?

4

1 に答える 1

8

それは正常です。バッファがフラッシュされるまでバッファに格納されます。ストリームに送信std::flushしてフラッシュできます。std::endl行末を書き込んでバッファをフラッシュするために使用できます。これは基本的に、ストリームに小さなことをたくさん書き込む場合に大量の I/O 操作を避けるための最適化です。

于 2012-08-27T02:34:49.857 に答える