1

在此处输入图像描述我需要限制用户在输入字符时输入整数和字符串。我有一个整数方法,我只需要将它调整为一个字符。谁能帮我这个。

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;
}

我已经尝试过了,没有错误。但它不会工作。

4

2 回答 2

3

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

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

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

有关. _ _std::isalpha

于 2012-10-11T13:16:07.717 回答
0

我将方法更改为:

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

在我的主要我有:

string input = "你的性别男/女是什么?"; 字符性 = getChar(输入); cout << 性别 <<"\n";

这样做,我不允许输入数字文问什么是性别。

于 2012-10-11T21:04:10.517 回答