1

ここに画像の説明を入力文字を入力するときに、ユーザーが整数と文字列を入力できないようにする必要があります。整数のメソッドがありますが、それを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;
}

私はこれを試しましたが、エラーはありません。しかし、それはうまくいきません。

4

2 に答える 2

3

「うまくいかない」ということは、より長い文字列や数字を入力しても、それが受け入れられることを意味していると思います。これは、<<演算子を介して入力されたすべての文字と数字が依然として 1 文字であるためです。

アルファベット以外の文字が必要ない場合は、別のチェックを追加する必要があります。

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 = "M/F の性別は?"; char セックス = getChar(入力); cout << セックス <<"\n";

これを行うと、性別を尋ねられたときに番号を入力することはできません。

于 2012-10-11T21:04:10.517 に答える