0

ユーザーからの入力を収集するメソッドを作成しようとしています。正しい 2 つの値以外が入力された場合にエラー メッセージを出力するもの。私の教授はコードを解読するのが大好きで、そこに座って、何かが解読されるまでキーボードに頭をぶつけます。cin.good()orを使用するcin.fail()だけでは十分ではありません。ctrl+z やその他の特定の文字列を入力するなど、フラグが立てられない特定のキーストロークがあるためです。

rdstate()どのようなキーストロークの組み合わせが入力されても、使用することがユーザー エラーにフラグを立てる唯一の方法であると言われました。

このメソッドは、ユーザーからの入力を収集し、それが整数 (1 または 2) であることを確認してから、ユーザー入力に基づいてロジックを実行します。で入力を集めてgetline()から で整数に変換したほうがよいでしょうatoi()か? または、>>演算子を使用して、入力を直接変数に整数として入れますか? >>エラーを処理するときに本当に面倒だと聞いたことがあります。私は C++ が初めてで、ベスト プラクティスがよくわかりません。

do {
    cout << "Press enter to advance: ";
    getline(cin, answer);
    int state = cin.rdstate();
    if(state!=0)
    {
        cout << "Invalid input, please press enter.... " << state << endl;
        system("PAUSE");
        cin.clear();
        if(cin.rdbuf()->in_avail()>0)
        {
            getline(cin, answer);
            continue;
        }
    }
} while (answer == "\n");

これは、自分の考えが正しいかどうかを確認するためのテスト関数を作成する最初の試みでした。うまくいきません。誰かが理由を理解するのを手伝ってくれますか?

4

0 に答える 0