Использование (! Cin & gt; & gt; x) для обнаружения неправильного ввода пользователя

Это то, с чем я работаю, мой код должен читать пользовательский ввод, который гарантирует, что пользователь вводит значение 1, 2 или 0. Любое другое значение, и он выдает сообщение об ошибке, которое предлагает пользователю повторить попытку. Теперь он делает все это, но у меня возникают проблемы с его оптимизацией:

  • Когда я ввожу любое из правильных чисел, оно не регистрирует его в первый раз, я должен ввести значение снова, чтобы программа работала.

    int LogicCalculator::m_userChoice(int &number)
    {
    number = num;//assignment
    //output
    std::cout<<"Selection: ";
    //input
    std::cin>>number;
    //Error Checking
    while((number < 0 || number > 3) || !(cin >> number))
    {
    cin.sync(); //discard unread characters in input buffer
    cin.clear(); //clear bad input flag
    
    cout<<"Only 1, 2 or 0 are acceptable entries. Exception No."<<endl;
    cout<<"Press Enter to Try Again"<<endl;
    
    if(cin.ignore())
    {
    system("cls");//clears the screen after the user presses Enter
    }
    
    m_Menu();
    m_userChoice(number);
    }
    return number;
    };
    

Если кто-нибудь знает, как решить эту проблему, я буду очень признателен.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru