在C++中打印到控制台而不会泛滥

Der*_*rek 5 c++ printf

我为一个不准确的标题道歉,但我不确定这究竟是什么.

如何在控制台上打印一条更新线?

例如,如果我想在每个周期打印一个百分比完成状态但是没有使用文本流来控制控制台,我将如何实现这一目标?(这叫什么? - 未来的谷歌搜索)

谢谢!

Ara*_*raK 11

有清洁屏幕虽然有一个简单的方法返回到开始时没有可移植的方法使用\r则覆盖了我们之前写的.我使用的SleepWindows API:

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
 for(int i = 1; i <= 10; i++)
 {
  std::cout << i*10 << '%';
  std::cout.flush(); // see wintermute's comment
  Sleep(1000);
  std::cout << '\r';
 }
}
Run Code Online (Sandbox Code Playgroud)

  • 您可能希望在`Sleep()`之前调用`std :: cout.flush()`,因为`std :: cout`是一个缓冲流,因此它的内容可能在您预期时不会显示. (6认同)