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

Ari*_*ona 9 c++ console animation replace loading

我正在使用c ++编写控制台应用程序,我需要使用ASCII字符来制作类似"loading.gif"的东西.

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

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

这些符号将通过循环来制作加载动画.

但是,当我写输出时,它变得像:

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

我需要像这样做:

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

它永远不应该到第二行.

我怎么能用C++做到这一点?有什么样的替换功能吗?

Mik*_*our 13

您可以使用退格符('\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;
    }
}
Run Code Online (Sandbox Code Playgroud)


Sof*_*ner 6

Microsoft Windows版本.

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

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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)