为什么我需要两次输入非char值才能结束程序

时间:2017-03-24 11:05:23

标签: c++

我有一些代码要求用户输入字母数字字符,如果他们输入其他字符(例如@,#,$),它将再次要求输入字母数字字符。 出于某种原因,我需要在它接受之前输入两次非字母数字字符。这是代码。

#include <iostream>
#include <cctype>

using namespace std;

void get_option(char& input, string msg) {
    string clear_input;
    bool isletter;
    bool isnumber;
    bool test = 0;
    while (test == 0) {
        cout << msg;
        cin >> input;
        isletter = isalpha(input);
        isnumber = isdigit(input);
        if (isletter == 0 && isnumber == 0) {
            cin.clear();
            cin >> clear_input;
            cout << input << endl << isnumber << endl << isletter << endl;
            test = 0;
        }
        else if (isletter == 1 || isnumber == 1) {
            test = 1;
        }

    }
}

int main() {
    char input;
    string msg = "Please enter an alphanumeric char: ";
    get_option(input, msg);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

这是因为cin >> clear_input;行,我认为没有任何目的。删除该行(以及clear_input的声明)。