2011-02-13 152 views
13

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

+0

那么你的意思是说打印和擦除数字? – rda3mon 2011-02-13 05:44:09

+1

@Ringo:是的。您也可以将其扩展到一般问题:我将如何更改之前打印到控制台的任何内容?我也看到并感到有趣:改变输出文本的颜色。 – 2011-02-13 05:45:20

回答

29

当我’已经需要我有只输出一个回车字符,在C++ \r

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

cout << "\r" << x << "% completed.  " << flush; 

空间在结束时清除的微软般波动的进展情况就行了先前的输出。

enter image description here

11

使用退格字符。

cout << "10%"; 
// ... 
cout << "\b\b\b20%"; 
5

我通常放置进度信息后回车。这样,任何其他输出都将显示为正常(只要其中有足够的字符即可完全覆盖进度信息)。

cerr<<percentage<<"% \r"; 

顺便说一句,我更喜欢使用CERR而不是COUT对于这种状态/诊断信息,以便COUT可预留真正的内容。通过这种方式,您可以将正常的程序输出重定向到一个文件,并可以在控制台中看到进度。另外,用cerr,你不必使用“flush”。