2012-05-21 23 views
15

好的,我有點尷尬地問這麼簡單的事情,但仍然是。顯示命令行應用程序的進度

我有命令行實用程序應用程序,需要向用戶顯示進度。

我可以寫進展到COUT,像這樣:

std::cout << "10%\n"; 
... 
std::cout << "20%\n"; 
... 
std::cout << "30%\n"; 

...但作爲一個結果,用戶將看到:

some line printed before 
10% 
20% 
30% 
... 

...但我真正需要的是百分比得到之初更新,像這樣:

some line printed before 
10% 
... 

...和更新後:

some line printed before 
20% 
... 

...之後第二次更新:

some line printed before 
30% 
... 

我應該如何做到這一點?

+3

雖然下面的答案是好的,但是不可能說一定會有什麼效果,除非你聲明你的程序在運行的操作系統。 –

+0

@AmigableClarkKant我需要在Linux(Ubuntu)和Windows上工作。 –

+1

我認爲約阿希姆Pileborgs答案應該適用於這些。 –

回答

24

而不是使用'\n'的,使用'\r'

使用std::flush很重要,所以流內容真的被輸出。

6

使用回車

std::cout << "\r10%"; 
std::cout << "\r20%"; 
... 

轉到行的開頭。完成後

std::cout << "\r10%" << std::flush; 

打印換行符('\n'):