2012-05-21 77 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'):