提问人:David.S 提问时间:1/4/2023 更新时间:1/4/2023 访问量:186
一段时间内的 CIN 循环未按预期工作 [复制]
cin in a while loop not working as expected [duplicate]
问:
我是一个新的 cpp 学习者,目前正在尝试 std iostream 库。我正在开发一个程序,该程序将数字作为输入并输出数字,并在输入 0 时退出。我还希望程序可以忽略无效输入,在遇到无效输入时输出错误消息并继续读取数字,直到我输入 0 退出。下面是我写的代码:
while (true) {
cout << "Please input value" << endl;
cin >> value;
if (cin.fail()) {
cerr << "Invalid input" << endl;
} else if (value == 0) {
cout << "Exit with 0";
break;
} else {
cout << "You have entered " << value << endl;
}
}
代码没有像我预期的那样工作。当我输入正常数字并且效果很好时,输出每个数字,直到我输入 0:
Please input value
1
You have entered 1
Please input value
2
You have entered 2
Please input value
0
Exit with 0
但是,当我输入的内容不是数字时,则在下一个 while 循环中不起作用并重复输出错误消息:cin
Please input value
a
Invalid input
Please input value
Invalid input
Please input value
Invalid input
Please input value
Invalid input
Please input value
more lines
我假设当一个 cin 失败时,它不会在下一个循环中读取另一个数字。我想知道我怎样才能“重新激活”cin 以使其读取数字,即使它以前失败了。
任何帮助都是值得赞赏的。
答: 暂无答案
评论
cin.clear()
cin.ignore(...)