-5
bool correct = false;
while (!correct)
{
    cout << "Please enter an angle value => ";
    cin >> value; //request user to input a value

    if(cin.fail())
    {
        cin.clear();
        while(cin.get() != '\n');
             correct = false;
    }
    else
        cin.get();
    cin.ignore();
    correct = true;
}

上記のコードによると、私の問題は次のとおりです。

  1. 値を入力した後、プログラムは一時停止し、プログラムの次の部分に進むにはもう一度 Enter キーを押す必要があります。どうすれば回避できますか?

  2. また、「abcd」のように値を入力すると、プログラムがループしてユーザーに再度値を入力するように要求しません。なぜですか? 代わりに、続行して値 0 を出力します。

私はまだこれらの種類のコマンドに慣れていないので、プレイして探索するだけです。ガイドに感謝します!

編集:

while (!correct)
    {
        cout << "Please enter an angle value => ";
        cin >> value; //request user to input a value

        if(cin.fail())
        {
        cin.clear();
        while(cin.get() != '\n');
        correct = false;

        }
        else
        {
        cin.get();
        cin.ignore();
        correct = true;
        }
    }
4

1 に答える 1

3

correct=true最初の反復で無条件に設定し、ループから抜け出します。の後の 3 つのステートメントの前後に 1 組の中括弧を追加するつもりだったようですelse

于 2013-07-27T00:01:13.127 に答える