传递错误类型时,开关卡在循环中

时间:2018-06-14 10:50:42

标签: c++

我有一个需要int的switch case,当给出一个int时,它按预期运行。使用cin从用户处获取int。如果用户输入一个字母,该功能会在后续传递中跳过cin并继续循环。如何输入错误的类型导致程序停止等待cin?

如果我输入等效的字母整数,它可以正常工作,例如101而不是e。我希望它只是进行类型转换,但我想这不是它的作用。

重现问题的最简单版本代码:

#include <iostream>

bool ui_switch();

int main() {
     while(ui_switch());
     return 0;
}

bool ui_switch() {
    int input;
    std::cout << "user > ";
    std::cin >> input;
    switch (input) {
    case 1:
        std::cout << "Exiting cin loop\n";
        return false;
        break;
    case 2:
        std::cout << "Not exiting loop\n";
        break;
    default:
        std::cout << "Help, I'm trapped in a loop!\n";   // if char entered
        break;
    }
    return true;
}

0 个答案:

没有答案