gpt4 book ai didi

c++ - switch case 语句不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 15:26:41 26 4
gpt4 key购买 nike

所以我在一个简单的控制台应用程序中制作了一个菜单。我的代码几乎是:(链接到底部的实际代码!)

int input;
bool LOOPING = true;

while(LOOPING)
{
cout << "Select an option:\n";
cout << "1 - option 1\n";
cout << "2 - option 2\n";
cout << "3 - option 3\n";
cout << "4 - option 4\n>";
cin >> input;

switch(input) {
case 1:
game();
break;
case 2:
game();
break;
case 3:
game();
break;
case 4:
game();
break;
default:
cout << "ERROR: invalid input!\nPlease enter in a number!\n\n";
break;
}
}
// rest of app...

我的问题是,程序只是进入一个持续的文本循环!为什么会这样?为什么 default: 不能阻止这种情况发生,我该如何阻止这种情况发生?

提前致谢!

编辑:要求提供真实代码。

http://pastie.org/2415852
http://pastie.org/2415854
http://pastie.org/2415855

最佳答案

您的代码无限循环,因为您从未将 LOOPING 设置为 false。在实际代码中,您仅在用户选择退出时才将其设置为 false,这永远不会发生,因为用户在第一次输入非数字后无法再输入。

在您输入字符后它不会一直要求您输入的原因是 >>> 不会消耗无效输入。 IE。如果 >>> 应该写入 int,但用户输入的不是有效的 int,它不会写入 int,但也不会删除来自流的用户输入(相反,它将简单地设置 cin 的错误标志,您应该检查它)。

输入将保留在流中,直到您将其写入其他地方或将其丢弃。除非您这样做,否则每次后续读取 int 的尝试都将失败,因为无效输入仍在流中。

关于c++ - switch case 语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7158494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com