在 cin 失败时捕获无效输入

  • 本文关键字:无效 cin 失败 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。

首先,您需要调用 cin.clear 来清除错误条件 - 在执行此操作之前,所有从中读取的尝试都将失败。之后,您可以阅读一个字符并检查它是否是您关心的角色,这是一般顺序上的内容:

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

最新更新