微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决C++ 在 while 循环期间不打印到控制台,只有在循环完成后

背景
我目前正在为一个基于MENACE的naughts and crosses机器学习程序编写一些代码,我已经完成了实际机器学习和与计算机对战的代码,以及另一台与它对战的计算机对其进行训练的代码.用户可以输入他们想让计算机自行训练,然后输入要玩的游戏数量

问题
我正在尝试制作一个 % 完成显示,每次更新时都会覆盖自己。我遇到的问题是,由于某种原因,代码不会打印任何应该在 while 循环中打印的内容,而是等到最后一次打印所有内容。我正在使用 '\r' (回车)来覆盖上次打印的文本。如果我删除回车符,while 循环会像它应该做的那样在每次迭代中打印文本。我不知道是什么导致了这个问题,因为我对 C++ 很陌生。

我正在 Repl.it 中编程,因为我无法在我使用的计算机上安装 IDE。

这是计算和显示完成百分比的子程序(使用命名空间 std)。

void calcCompletion(int a,int b)
{
  int completion = (static_cast<float>(a)/b) * 100;
  cout << '\r';
  cout << completion << "%";
}

这里是调用过程的 while 循环的开始(当我测试这个时,模式总是 2)。

while(gamesPlayed < gameEnd)
  {
  //permutations();
  if(mode != "1")
  {
    calcCompletion(gamesPlayed,gameEnd);
  }

这是一个很长的 while 循环,所以我不会展示整个内容(因此大括号不匹配的原因)。

这是输出

 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%
--------------

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

我已经测试过尝试覆盖我在另一个代码中没有时间延迟编写的内容,它工作正常,所以很明显被覆盖太快不是问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。