显示命令行应用程序的进度

时间:2012-05-21 08:05:09

标签: c++ c

好吧,我有点不好意思问这么简单但仍然。

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

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

我该如何实现?

2 个答案:

答案 0 :(得分:24)

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

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

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

使用std::flush非常重要,这样才能输出流内容。

答案 1 :(得分:6)

使用回车

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

转到该行的开头。