Можно ли использовать Cin.Ignore () для одновременного игнорирования отрицательных чисел, положительных чисел и букв? - PullRequest
0 голосов
/ 05 октября 2018

Я хочу создать простой цикл while, используя cin.ignore (), чтобы разорвать цикл, только если переменная x равна 0, 1, 2 или 3. Мне нужен скрипт, чтобы игнорировать все остальное и предлагать пользователючтобы снова ввести значение для x.

#include <iostream>
#include <limits>

using namespace std;

int main()
{
    int x;
    while(x < 0 || x > 3)
    {
        system("cls");
        cout << "Please enter an x value: ";
        cin >> x;
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
    cout << "x = " << x << endl;
    return 0;
}

В настоящее время этот скрипт игнорирует отрицательные и положительные числа, но не игнорирует ввод символов или символов.Как я могу также игнорировать символы и строковые вводы?Кажется, что cin.ignore () устанавливает x в 0 и прерывается при вводе текста.

Исследование:

Как правильно использовать cin.clear и cin.ignore Дает интересную информацию о cin.fail ()

Cin.Ignore () не работает Предоставляет некоторую интересную информацию о cin.get () и cin.sync ()

Эти статьи касаются различных функций cin.ignore () и не кажутсячтобы полностью исправить неправильное назначение типа и как это работает с cin.ignore ().Таким образом, я предполагаю, что присваивание не может присвоить 'dadsa', например, переменной x, а cin.ignore () потребляет 'dadsa', таким образом делая x равным 0. Это дает бесконечный цикл при вводе текста.Спасибо вам всем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...