2015-01-16 61 views
2

我剛學C++和被打的睡眠()函數,這是我的代碼C++先睡覺不是「COUTS」

#include<iostream> 
#include<unistd.h> 
using namespace std; 
int main(){ 
cout << "..."; 
sleep(5) 
cout << "\nLorem Ipsum" 
} 

,而不是輸出的是

... 

,比五年後秒

Lorem Ipsum 

,而不是我第一次送五週秒鐘的等待,比該打印一次全部

... 
Lorem Ipsum 
+4

「cout」最有可能被緩衝。 –

+4

使用'cout <<「...」<< std :: flush;' – inetknght

+1

試着只顯示編譯的代碼(所以請複製你實際編譯過的代碼至少一次)。您發佈的這段代碼顯然不是。 – stefan

回答

4

你應該flush()cout明確(或使用std::endl)來強制立即輸出

int main() { 
    cout << "..."; 
    cout.flush(); // Flush explicitly 
    sleep(5): 
    cout << "\nLorem Ipsum"; 
} 

的文本將不會被寫入std::cout,除非基礎緩衝區已經達到了一定的水印填充,或std::flush()是稱爲(std::endl這樣做隱含)。

+0

感謝您的回覆。它解決了這個問題,我也研究了一些緩衝區。 – John

+0

@BenVoigt THX爲您的改進做了很多工作,我不是母語的人,有一個棘手的鍵盤,大部分時間都在打字喝醉;-)。 –

+0

@πάνταῥεῖ:啊,有些人比其他人對這些事情更加防守。我會盡量記住繼續,並自願對帖子進行小幅改進。 –