我在网上看到了这个回车示例,说明了加载效果,但是我无法正确理解它。为什么必须是2 \rLoading
而不是1?有人可以向我解释吗?
for (int j = 0; j < 3; j++) {
cout << "\rLoading \rLoading";
for (int i = 0; i < 3; i++) {
cout << ".";
sleep(300);
}
}
第一部分
\rLoading____
被打印为在行的开头具有字符串“ Loading”和三个空格。然后,下一个回车将光标设置到行的开头。然后
Loading
被再次打印,但是光标现在直接位于单词之后的三个空格中的第一个空格处。现在在这里:
for (int i = 0; i < 3; i++) {
cout << ".";
sleep(300);
}
三个点以300秒的间隔打印到三个点所在的位置。
整个过程重复了三遍,所以第一个“加载”的三个空白的主要目的是从上一次迭代中删除点。
同意@Ctx以下是经过优化的代码,可以直接在现代x86和linux计算机上编译并运行它们。您可以自己修改并尝试。
#include <iostream>
#include <unistd.h>
int main(int argc, char* argv[]) {
for (int j = 0; j < 3; j++) {
std::cout << "\rLoading \rLoading" << std::flush;
for (int i = 0; i < 3; i++) {
std::cout << "." << std::flush;
sleep(1);
}
}
std::cout << std::endl;
return 0;
}
两次促销: