1

我最近正在编写一个涉及套接字的简单 c++ 程序。自从我使用 c++ 以来已经有一段时间了,所以我正在做一些简单的完整性检查以确保我的类被正确构造。那时我遇到了一个非常奇怪的错误。当我没有\nendl在我的输出结束时控制台,它不会写入控制台。例如:

这不会输出到控制台

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 回答