用于用户输入的单个char的Validator

时间:2012-10-11 13:09:06

标签: c++ user-input validation

enter image description here我需要限制用户在输入char时输入整数和字符串。我有一个整数的方法我只需要调整它的char。任何人都可以帮助我。

char getChar()
    {
        char myChar;
        std::cout << "Enter a single char: ";
        while (!(std::cin >> myChar))
        {
            // reset the status of the stream
            std::cin.clear();
            // ignore remaining characters in the stream
            std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
           // ^^^  This line needs to be changed.
            std::cout << 

           "Enter an *CHAR*: ";
    }
    std::cout << "You entered: " << myChar << std::endl;
    return myChar;
}

char getChar()
{
    char myChar;
    std::cout << "Enter an Char: ";
    while (!(cin >> myChar))
    {
        // reset the status of the stream
        cin.clear();
        // ignore remaining characters in the stream
        cin.ignore(std::numeric_limits<char>::max() << '\n');
        cout << "Enter an *CHAR*: ";
    }
    std::cout << "You entered: " << myChar << std::endl;
    return myChar;
}

我试过这个并且没有错误。但它并不神奇。

2 个答案:

答案 0 :(得分:3)

我猜测“不起作用”你的意思是即使你输入一个更长的字符串或数字,它仍然被接受。这是因为通过<<运算符输入的所有字母和数字仍然是单个字符。

如果您不想要非字母字符,则必须添加另一项检查:

while (!(std::cin >> myChar) || !std::isalpha(mychar))

有关std::isalpha的解释,请参阅this reference

答案 1 :(得分:0)

我将methid更改为:

char getChar(string q)
{
char input;
do
{
cout << q.c_str() << endl;
cin >> input;
}
while(!isalpha(input));
return input;
}

我的主要是:

字符串输入=&#34;你的性别M / F是什么?&#34 ;;     char sex = getChar(输入);     cout&lt;&lt;性别&lt;&#;&#34; \ n&#34;;

在这个问题上,我不允许输入一个数字,询问性别是什么。