C ++如何替换已输出的文本?

时间:2017-01-19 23:46:44

标签: c++14

我正在尝试制作一个加载屏幕,其中包含由这些字符组成的圆圈:/ - | \ 所以它将输出如下:

|

/

-

\

|

/

-

\

但不是只输出它,我想知道如何在定时间隔中替换前一个字符。谢谢!

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用\r。这只适用于单行。

#include <iostream>
#include <chrono>
#include <thread>

using namespace std::literals;

int main() {
  static const std::string sequence = "|/-\\";
  auto duration = 5s;
  auto duration_step = 250ms;
  for (auto i = 0; i < (duration/duration_step); ++i) {
    std::cout << "\r" << sequence[i%sequence.size()] << std::flush;
    std::this_thread::sleep_for(duration_step);
  }
  return 0;
}

更高级的行为需要一个库(例如ncurses)和更多的工作,尤其是初学者。