2012-05-11 108 views

回答

7

你可能在這裏看到的是輸出被緩衝的效果。一般來說,直到使用std::endl之後,輸出纔會被寫入。

for(int i=0;i<9;i++) 
{ 
    // Flushes and adds a newline 
    cout<< "||" << endl; 
    sleep(1); 
} 

引擎蓋下std::endl正在添加新行字符,然後使用std::flush強制輸出到控制檯。你可以直接使用std::flush得到相同的效果

for(int i=0;i<9;i++) 
{ 
    cout << "||" << flush; 
    sleep(1); 
} 
+3

也許你應該確定endl既添加行尾又調用flush。大多數情況下,單獨一個'\ n'就足夠了。 – Klaim

+1

*一般情況下,直到打印新行時輸出纔會真正寫入** **。* ..這是不正確的。換行符不能保證。請注意,'std :: endl'向緩衝區**和**添加一個換行符,然後將其刷新。 – Nawaz

+1

std :: endl的工作原理是添加行結束符(\ n代表* nix,\ r \ n代表Windows)和一個std :: flush。關鍵部分是std :: flush,但是std :: endl肯定可行。 –

13

你不會沖洗你的輸出。

std::cout << "||" << std::flush; 
相關問題