首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++在while循环期间不打印到控制台,只在循环完成后才打印到控制台。

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

Stack Overflow用户
提问于 2021-04-14 09:10:34
回答 1查看 398关注 0票数 0

背景

我目前正在为一个基于M.E.N.A.C.E的无符号和交叉机器学习程序编写一些代码,我已经完成了实际机器学习和与计算机玩的代码,以及另一台计算机用来对它进行游戏训练的代码。用户可以输入他们希望让计算机自己训练的内容,然后输入要玩的游戏数量。

问题

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

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

下面是计算和显示%完成(使用命名空间std)的子例程。

代码语言:javascript
复制
void calcCompletion(int a, int b)
{
  int completion = (static_cast<float>(a)/b) * 100;
  cout << '\r';
  cout << completion << "%";
}

下面是while循环的开始,其中调用了过程(在我测试这个过程时,模式总是2)。

代码语言:javascript
复制
while(gamesPlayed < gameEnd)
  {
  //permutations();
  if(mode != "1")
  {
    calcCompletion(gamesPlayed, gameEnd);
  }

这是一个很长的match循环,所以我不会显示全部内容(因此,为什么花括号不匹配)。

这是输出:

代码语言:javascript
复制
 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循环完成,然后打印最后一个数字,而不是按执行过程打印。

我已经测试过试图覆盖我在另一段代码中没有时间延迟编写的东西,它工作得很好,所以显然被覆盖太快并不是问题所在。

EN

回答 1

Stack Overflow用户

发布于 2022-07-03 14:03:24

您还没有关闭while循环下(if子句)的大括号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67088805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档