如何正确理解回车(又名\r)?

red*_*maj 4 c++ loops carriage-return

我在网上看过这个关于加载效果的回车示例,但我没有正确理解它。为什么它必须是 2\rLoading而不是 1?有人可以向我解释一下吗?

for (int j = 0; j < 3; j++) {
  cout << "\rLoading   \rLoading";
  for (int i = 0; i < 3; i++) {
    cout << ".";
    sleep(300);
  }
}
Run Code Online (Sandbox Code Playgroud)

Ctx*_*Ctx 5

第一部分

\rLoading____
Run Code Online (Sandbox Code Playgroud)

打印为在行的开头有字符串“Loading”和三个空格。下一个回车然后将光标设置到行的开头。然后

Loading
Run Code Online (Sandbox Code Playgroud)

再次打印,但光标现在直接在单词后面,三个空格中的第一个。现在在这里:

for (int i = 0; i < 3; i++) {
  cout << ".";
  sleep(300);
}
Run Code Online (Sandbox Code Playgroud)

三个点以 300 秒的间隔打印到三个点所在的位置。

整个过程迭代了 3 次,所以第一个“加载”的三个空白的主要目的是删除前一次迭代中的点。