繁体   English   中英

除非遇到换行符,否则C ++不会写入控制台

[英]c++ not writing to console unless a newline was encountered

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

这不会输出到控制台

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

这个会:

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

两者都是使用Server server;创建的Server server; 这只是我计算机中的“鬼”,还是以前有人遇到过?

那很正常 它存储在缓冲区中,直到刷新缓冲区。 您可以将std::flush发送到流中以对其进行刷新。 您可以使用std::endl写入行尾并刷新缓冲区。 从本质上讲,这是一种优化,可以避免在向流中写入很多小东西时避免进行大量I / O操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM