C++ C++;在while循环期间不打印到控制台,仅在循环完成后打印

C++ C++;在while循环期间不打印到控制台,仅在循环完成后打印,c++,while-loop,iostream,cout,carriage-return,C++,While Loop,Iostream,Cout,Carriage Return,背景 我目前正在为基于m.E.N.a.C.E的Noots and Cross机器学习程序编写一些代码,我已经完成了实际的机器学习和与计算机对抗的代码,以及另一台与计算机进行游戏训练的代码。用户可以输入他们想让计算机自己训练的内容,然后输入要玩的游戏数量 问题 我正在尝试创建一个完成百分比显示,它会在每次更新时覆盖自身。我遇到的问题是,出于某种原因,代码不会在while循环期间打印任何应该打印的内容,而是等到循环结束时一次性打印所有内容。我正在使用“\r”(回车)覆盖上次打印的文本。如果我删除回车

背景
我目前正在为基于m.E.N.a.C.E的Noots and Cross机器学习程序编写一些代码,我已经完成了实际的机器学习和与计算机对抗的代码,以及另一台与计算机进行游戏训练的代码。用户可以输入他们想让计算机自己训练的内容,然后输入要玩的游戏数量

问题
我正在尝试创建一个完成百分比显示,它会在每次更新时覆盖自身。我遇到的问题是,出于某种原因,代码不会在while循环期间打印任何应该打印的内容,而是等到循环结束时一次性打印所有内容。我正在使用“\r”(回车)覆盖上次打印的文本。如果我删除回车符,while循环在每次迭代中打印文本,就像它应该做的那样。我不知道是什么引起这个问题,因为我对C++很陌生。 我正在用Repl.it编程,因为我无法在正在使用的计算机上安装IDE

下面是用于计算和显示完成百分比(使用命名空间std)的子例程

它只是等待while循环完成,然后打印最后一个数字,而不是边打印边打印


我已经测试过试图在另一段代码中无延迟地覆盖我编写的内容,它工作正常,因此显然覆盖过快不是问题。

std::cout
的输出被缓冲。如果你想强制输出,你需要刷新它。@Someprogrammerdude你能详细说明一下它是如何工作的或者如何实现的吗?正如我所说的,我对C++非常陌生,希望你的入门书或教程应该提到我?如果它没有提到刷新流所需的特定对象,那么请查看链接引用中的列表。
void calcCompletion(int a, int b)
{
  int completion = (static_cast<float>(a)/b) * 100;
  cout << '\r';
  cout << completion << "%";
}
while(gamesPlayed < gameEnd)
  {
  //permutations();
  if(mode != "1")
  {
    calcCompletion(gamesPlayed, gameEnd);
  }
 clang++-7 -pthread -std=c++17 -o main ai.cpp base3.cpp main.cpp otherai.cpp permutations.cpp winCheck.cpp
 ./main
Enter mode. 
1 - Play the AI 
2 - Train the AI
2
How many games would you like the AI to play?
5

Simulating...
80%
Games complete.
Games played: 5
Games won: 1
Games lost: 0
Games drawn: 4
Win Percentage: 20%
Loss Percentage: 0%
--------------