好吧,我有点不好意思问这么简单但仍然。
我有命令行实用程序应用程序,需要向用户显示进度。
我可以将进度写入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%
...
我该如何实现?
答案 0 :(得分:24)
不使用'\n'
,而是使用'\r'
:
std::cout << "\r10%" << std::flush;
完成后打印换行符('\n'
)。
使用std::flush
非常重要,这样才能输出流内容。
答案 1 :(得分:6)
使用回车。
std::cout << "\r10%";
std::cout << "\r20%";
...
转到该行的开头。