gpt4 book ai didi

c++ - 开关不需要的输出

转载 作者:行者123 更新时间:2023-11-28 06:04:37 25 4
gpt4 key购买 nike

我创建了一个您需要输入数字的开关。但是我遇到了一个我不知道如何修复的错误。

int user;
void lead() {
cout << "1 " << flush;
cin >> user;

switch (user) {
case 1:
break;
case 2:
break;
default:
cout << user << endl;
lead();
}
}

当我输入字母表(如“a”)时,它会向整个控制台发送“1”和“0”。不过,我对 C++ 还是个新手。

提前致谢。

最佳答案

这是因为输入运算符 >> 看到非法输入(它期望十进制整数数字)然后停止,将非法输入留在缓冲区中并设置 failbit .这意味着下次您尝试读取一个值时,输入运算符将看到与上一次调用完全相同的输入。

有几种方法可以解决这个问题:一种是从用户那里读取输入行,并以某种方式对其进行解析(例如将行放入 std::istringstream 并使用上的普通输入运算符)。

另一种解决方案是将输入流(在您的情况下为 std::cin)告知 ignore该行的其余部分。


一个不相关的注意事项:不要在 default 情况下递归调用该函数。而是使用循环。

关于c++ - 开关不需要的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32651260/

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