如何解决在while循环中执行的效果不如预期
我正在创建俄勒冈线索克隆作为概念类型的证明,由于某种原因,我在int main之前确定的函数循环没有循环,只是没有做任何事情。
using namespace std;
int debuginput;
string response;
int loop = 0;
void commands ()
{
if (response == "cmd")
{
cout <<
"what would you like to do? type 'help' to get a list of commands." <<
endl;
cin >> response;
if (response == "start")
{
loop = 1;
}
else
{
loop = 0;
}
if (response == "test")
{
cout << "test";
}
}
}
int
main ()
{
cin >> response;
do
{
commands ();
}
while (loop == 0);
/*-------------------------------------------------*/
}
基本上,每当我调用 commands 函数进行循环时,我都会输入一个命令,并且不会循环以让我输入另一个命令。
解决方法
在commands
函数中的这段代码中:
if (response == "start") {
int loop = 1;
}
您在堆栈上创建一个带有名称循环的新变量,将其设置为1,然后立即将其销毁。您可以用此阴影全局变量loop
。
我认为正确的变体应该是:
if (response == "start") {
loop = 1;
}
如果键入start
,它将更新loop
变量,然后do while
循环将结束。如果这不是您想要的,则应更改条件:
void commands() {
// ...
cin >> response;
if (response == "start") {
loop = 1;
} else {
loop = 0;
}
}
do {
commands();
} while (loop == 1);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。