1

当我制作一个在命令行中显示进度的程序时,如何制作当进度增长时增加(或减少)的 1 行?

这样你就不会得到这个:

Progress: 1%
Progress: 2%
Progress: 3%
Progress: 4%
Progress: 5%
Progress: 6%

但是这个:

Progress: PROGRESS%

所以 1 单行用于整个操作

有人可以向我解释这是如何工作的吗?

4

4 回答 4

4

一种常见的方法是编写不以换行符 ( \n) 字符结尾的行,而是以回车符( ) 结尾的行\r,这样它们就可以被覆盖。为了与大多数平台兼容,这样做后必须手动刷新标准输出,否则会因为不显示行而感到痛苦。

于 2013-10-09T14:27:34.893 回答
1

在 C# 中使用 Console.SetWindowPosition

在 C++(我想是 Windows)中使用 SetConsoleCursorPosition。

(对于非 Windows C++,使用 ncurses 库)。

于 2013-10-09T14:28:54.097 回答
0

您尝试以下

 Console.Write("\rProgress-{0}%   ", progvalue);
于 2013-10-09T14:28:53.550 回答
-1

您想清除控制台。在 C# 中,您可以这样做Console.Clear

http://msdn.microsoft.com/en-us/library/system.console.clear.aspx

在 C++ 中,我认为您会执行以下操作:

system("cls");

您应该有一个函数,可以在每次清除后使用更新的值将所有文本重写到控制台。

于 2013-10-09T14:26:51.523 回答