cin失败时捕获无效输入

时间:2016-03-10 22:58:01

标签: c++

我提示用户输入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.

1 个答案:

答案 0 :(得分:0)

首先,您需要调用cin.clear来清除错误情况 - 直到您这样做,所有从中读取的尝试都将失败。在那之后,你可以阅读一个角色并检查它是否是你关心的角色,这是关于这个一般顺序的东西:

cin.clear();
char ch;
cin >> ch;
if (ch == 'q' || ch == 'Q')
    quit();