Как снова cin после ввода ctrl + x через некоторое время (cin < - PullRequest
0 голосов
/ 26 мая 2020

Это мой код

stream& operator>>(istream& is, fraction& f) 
    {
        is >> f.numerator;
        cout << "/";
        is >> f.denominator;
    }

...

void insertFraction(fraction*& f, int& n, fraction x)
{
    int m = n + 1;
    fraction* fNew = (fraction*)realloc(f, m * sizeof(fraction));
    if (fNew != NULL)
    {
        fNew[n] = x;
        n++;
        f = fNew;
    }
}

...

void enterFraction(fraction*& f, int& n)
{
    fraction x;
    f = NULL;
    n = 0;
    int i = 1;
    cout << "Enter fraction " << i << " : \n";
    while (cin >> x)
    {
        insertFraction(f, n, x);

        i++;
        cout << "Enter fraction " << i << " or enter Ctrl + X to stop: \n";
    }
}

Вопрос в том, что после вызова функции enterFraction Я могу снова использовать cin из-за Ctrl + X, пожалуйста, помогите мне снова использовать cin после функции enterFraction. Спасибо !!

1 Ответ

0 голосов
/ 26 мая 2020

Думаю, вы спрашиваете, как восстановить cin после ошибки. Для этого вы должны вызвать

cin.clear();

. Также было бы неплохо отказаться от всех ожидающих ввода, которые могли остаться после ошибки. Для этого звонка

cin.ignore(std::numeric_limits<std::streamsize>::max());

Вам необходимо #include <limits> для класса numeric_limits.

...