当我制作一个在命令行中显示进度的程序时,如何制作当进度增长时增加(或减少)的 1 行?
这样你就不会得到这个:
Progress: 1%
Progress: 2%
Progress: 3%
Progress: 4%
Progress: 5%
Progress: 6%
但是这个:
Progress: PROGRESS%
所以 1 单行用于整个操作
有人可以向我解释这是如何工作的吗?
当我制作一个在命令行中显示进度的程序时,如何制作当进度增长时增加(或减少)的 1 行?
这样你就不会得到这个:
Progress: 1%
Progress: 2%
Progress: 3%
Progress: 4%
Progress: 5%
Progress: 6%
但是这个:
Progress: PROGRESS%
所以 1 单行用于整个操作
有人可以向我解释这是如何工作的吗?
一种常见的方法是编写不以换行符 ( \n
) 字符结尾的行,而是以回车符( ) 结尾的行\r
,这样它们就可以被覆盖。为了与大多数平台兼容,这样做后必须手动刷新标准输出,否则会因为不显示行而感到痛苦。
在 C# 中使用 Console.SetWindowPosition
在 C++(我想是 Windows)中使用 SetConsoleCursorPosition。
(对于非 Windows C++,使用 ncurses 库)。
您尝试以下
Console.Write("\rProgress-{0}% ", progvalue);
您想清除控制台。在 C# 中,您可以这样做Console.Clear
:
http://msdn.microsoft.com/en-us/library/system.console.clear.aspx
在 C++ 中,我认为您会执行以下操作:
system("cls");
您应该有一个函数,可以在每次清除后使用更新的值将所有文本重写到控制台。