2016-09-29 9 views
0

2つの入力が整数であるかどうかをチェックしようとしています。私はエラーを1つの入力をチェックすることができますが、私は 'get'関数を使用していて、両方の入力が 'cin'ストリームからのものである場合、2つの別々のものをチェックする方法はあまりよく分かりません。 C++を使用します。2つの別々の入力をチェックする際のエラー

整数をチェックするためのコードが以下に表示されています。

#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'を使います。 –

+0

そして、名前空間stdを使用して終了します。理由は? [Here](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

ありがとう、これは完全に働いた。 –

関連する問題