Проверка ошибок на двух отдельных входах

Я пытаюсь проверить два отдельных входа, являются ли они целыми числами или нет. Я могу проверить ошибку на одном входе, но я не совсем уверен, как проверить два отдельных, если я использую функцию «get», и оба входа из потока «cin». Использование c++.

Мой код для проверки одного целого числа отображается ниже.

#include <iostream>
using namespace std;

int main() {
int input;

cout << "Enter an integer: ";
cin >> input;

char next;
int x=0;

int done = 0;

while (!done){
    next = cin.get();
    if (next == ' ' || next == 'n'){
        cout << "The Integer that you have entered is: " << input << "n";
        done = 1;
    }
    else if (next == '.'){
        cerr << "Error: Invalid Input. Not an Integer." << "n";
        done = 1;
    }
    else{
        cerr << "Error: Invalid Input. Not a number." << "n";
        done = 1;
    }
}

return 0;
}

1 ответ

  1. Ну, вы могли бы использовать >>в intполностью до конца, отбросить все эти get()вещи и обработку символов и проверить cin.fail(). Например (я оставлю эту работу в вашей программе и повторю ее в цикле в качестве упражнения для вас):

    int x;
    cin >> x;
    if (cin.fail())
        cout << "Not a valid integer." << endl;
    

    Вы можете обрабатывать все последующие входные данные точно так же. Нет причин ограничивать только operator >>первый вход.