Ada*_*mer -3 c++ break do-while
目前我遇到了这个问题... while循环.
do {
// program code here
cout << "Would you like to run the program again?(yes/no)";
bool exit = false;
string strexit;
do {
getline(cin, strexit);
if (strexit == "no") {
exit = false;
break;
}
else if (strexit == "yes") {
exit = true;
}
else {
cout << "Enter yes to rerun the program, and no to exit.\n";
};
} while (!exit);
system("cls");
} while (exit);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在网上研究过,如何摆脱do ... while循环,当条件为真时,它会再循环回来,但如果它是假的,它会退出.因此,如果您查看代码,如果用户键入no,则设置exit = false,这将从更大的do while循环中取出,其中break将其从当前do while循环中取出.如果用户输入yes,则将exit更改为true,这会将其从当前的do ... while循环中分离出来,但它不会突破第二个.
我的问题是,(或者我需要帮助的是)当用户输入'no'时,它不能退出do ... while循环,而我对于为什么会非常困惑.(它循环回到程序的开头.)
Som*_*ude 13
在(缩短的)代码中
do
{
bool exit = false;
// ...
} while (!exit);
Run Code Online (Sandbox Code Playgroud)
你实际上有两个不同的符号命名exit
.在循环内你有变量.在循环之外,并用于条件,你有功能std::exit
.exit
如果你有,这将是明确的using namespace std;
.
在条件中使用的函数 exit
将衰减为指向函数的指针,并且它永远不会是"假".所以条件!exit
总是如此true
,你有一个无限循环.
要解决这个问题,您需要做两件事:
了解这using namespace std;
是非常糟糕的做法
移动exit
要在循环外定义的变量.你应该真正重命名为更具描述性的东西("退出"这个词有点笼统).