控制台在同一行更新进度
C#代码如下

using System; using System.Threading; class Program { static void Main() { Console.Write("Progress: "); // 循环迭代,模拟进度显示 for (int i = 0; i <= 100; i++) { // 更新控制台中的进度显示 Console.SetCursorPosition(10, Console.CursorTop); Console.Write($"{i}%"); // 模拟一些工作(例如处理任务、计算等待) Thread.Sleep(100); // 清除进度数字之后的部分(可选) ClearRemainingConsoleLine(); } // 所有进度完成后显示结束消息 Console.WriteLine("\nDone!"); } // 清除进度数字之后的方法 static void ClearRemainingConsoleLine() { // 记录当前光标位置 int currentLineCursor = Console.CursorTop; // 将光标移动到进度数字后,清除剩余部分 Console.SetCursorPosition(10, Console.CursorTop); Console.Write(new string(' ', Console.WindowWidth - 10)); // 将光标还原到之前的位置 Console.SetCursorPosition(10, currentLineCursor); } }
在C++控制台中,你可以使用 `std::cout` 来实现在同一行上更新进度。类似于C语言的方法,你同样可以使用转义字符 `\r` 控制光标位置。以下是一个简单的例子:

#include <iostream> #include <thread> // 包含头文件以使用sleep_for函数 int main() { for (int progress = 0; progress <= 100; progress++) { std::cout << "\rProgress: " << progress << "%"; std::cout.flush(); // 刷新输出缓冲区 std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 休眠100毫秒,模拟进度变化 } std::cout << std::endl; // 完成时换行 return 0; }
在这个例子中,`\r` 会将光标移动到行首,然后使用 `std::cout` 输出新的进度信息,并使用 `std::cout.flush()` 刷新输出缓冲区,确保信息立即显示。 `std::this_thread::sleep_for` 函数用于休眠,你可以根据需要调整参数。