c++ - 如何在用 C++ 编写的控制台应用程序中制作加载动画?

标签 c++ animation console replace loading

我正在用 C++ 编写一个控制台应用程序,我需要使用 ASCII 字符制作类似于“loading.gif”的东西。

以下是我应该使用的字符列表:

  1. --
  2. \
  3. |
  4. /
  5. --

这些符号会循环播放加载动画。

但是,当我写输出时,它变成了这样:

输出行 1: -- 输出第2行:\ 输出第 3 行: | 输出第4行:/ 输出第5行: --

我需要这样做:

输出第 1 行: [这将一直被替换]

它不应该到第二行。

我如何在 C++ 中执行此操作?有什么replace功能吗?

最佳答案

您可以使用退格字符 ('\b') 返回并覆盖控制台上的字符。您还需要在每次更改后刷新输出,否则输出可能会保留在缓冲区中而不会出现在控制台上。

这是一个简单的例子:

#include <iostream>
#include <unistd.h> // for sleep()

int main()
{
    std::cout << '-' << std::flush;
    for (;;) {
        sleep(1);
        std::cout << "\b\\" << std::flush;
        sleep(1);
        std::cout << "\b|" << std::flush;
        sleep(1);
        std::cout << "\b/" << std::flush;
        sleep(1);
        std::cout << "\b-" << std::flush;
    }
}

关于c++ - 如何在用 C++ 编写的控制台应用程序中制作加载动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8486181/

相关文章:

C++ cout 副作用排序

C++ 成员函数使用另一个成员函数

javascript - 我应该如何处理 React 的 componentWillUnmount 中的离开动画?

javascript - 为什么淡入和动画不同时发生?

java - 如果Java真的是平台无关的,为什么没有一劳永逸的clearConsoleOutput库方法呢?

c++ - 我怎样才能 cin 和 cout 一些 unicode 文本?

c++ - 在 lambda 表达式中捕获指针?

python - 在 Python 中绘制动画箭袋

delphi - 如何从 GUI 应用程序向控制台应用程序发送命令

c++ - 字符串类中 size() 和 at() 的不正确行为