簡體   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