16

好吧,我有点不好意思问这么简单的事情,但还是。

我有命令行实用程序应用程序,需要向用户显示进度。

我可以将进度写入 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%
...

我应该如何做到这一点?

4

2 回答 2

24

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

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

完成后打印换行符 ( '\n')。

使用它很重要,std::flush因此流内容确实是输出的。

于 2012-05-21T08:08:31.313 回答
6

使用回车

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

转到行首。

于 2012-05-21T08:07:19.427 回答