C++在控制台上更改输出

Fel*_*bek 13 c++ console

在控制台中显示更改数字的最简单方法是什么?我有一个正常的C++命令行程序使用cout,但是我想显示一个代表进度的百分比数字,在没有打印新行的情况下计算到100.怎么做的?(如果重要:我在Windows 7上)感谢您的回答!

Che*_*Alf 29

当我需要的时候,我只用C++ 输出一个回车\r.

请记住每次刷新输出,例如

cout << "\r" << x << "% completed.       " << flush;
Run Code Online (Sandbox Code Playgroud)

最后的空格可以清除线路上的先前输出,以防微软的波动进度.

在此输入图像描述


dan*_*n04 11

使用退格符.

cout << "10%";
// ...
cout << "\b\b\b20%";
Run Code Online (Sandbox Code Playgroud)


nob*_*bar 5

我通常会在进度信息后放回车.这样,任何其他输出将显示正常(只要它在行中有足够的字符来完全覆盖进度信息).

    cerr<<percentage<<"% \r";
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我更喜欢使用cerr而不是cout来获取这种状态/诊断信息,以便可以为真实内容保留cout.这样,您可以将正常程序输出重定向到文件,并仍然可以在控制台中查看进度.此外,使用cerr,您不必使用"flush".

  • @Felix:我当然会的!但也许不在Windows上.我记得,您必须使用非标准调用来告诉Microsoft的C++流库版本不要修改数据流中可能出现的"\ r \n"序列.在Linux上,stdin/stout的这种使用非常强大且非常普遍. (2认同)