我提示用户输入1到13之间的数字。当用户输入无效数据时,我不仅需要通知他不正确并再次提示他,而是检查无效数据是否为'Q '或'q'。在最后一种情况下,我将退出该计划。
唯一的问题是,当使用cin获取数据时,我无法与之交互。我想做的是当cin无法存储字符串并检查它是Q还是q。我怎么能这样做?
编辑: 如果我没有正确表达清楚,我想要做的就是检查输入失败时的内容。
int input;
cin >> input;
if(cin.fail()){
if(???){
// Check if input == 'q' || input == 'Q'
// Quit if thats the case
}
// Otherwise inform the user its invalid input
else{
cout << "Invalid input" << endl;
cin << input;
}
}
编辑:这与如何清除和忽略输入不重复。我知道该怎么做。我需要与无效输入进行交互,并检查它是否为Q.
答案 0 :(得分:0)
首先,您需要调用cin.clear
来清除错误情况 - 直到您这样做,所有从中读取的尝试都将失败。在那之后,你可以阅读一个角色并检查它是否是你关心的角色,这是关于这个一般顺序的东西:
cin.clear();
char ch;
cin >> ch;
if (ch == 'q' || ch == 'Q')
quit();