2016-09-29 4 views
0

Я пытаюсь проверить два отдельных входа, если они целые или нет. Я могу проверить ошибку на одном входе, но я не совсем уверен, как проверить два отдельных, если я использую функцию «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; 
} 
+0

Используйте 'std :: getline' вместо' operator >> '. –

+0

И выйти с использованием пространства имен std .. Причина? [Здесь] (http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) – amanuel2

+0

@ amanuel2 Несмотря на это другое сообщение, на самом деле нет причин не использовать все пространство имен в данном конкретном случае. –

ответ

0

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

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

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

+0

спасибо, это сработало отлично. –

 Смежные вопросы

  • Нет связанных вопросов^_^