2012-03-31 33 views
1

私は、ユーザーが予想されたものと異なるデータを入力するランタイムエラーを処理することに問題があります。たとえば、整数が必要ですが、ユーザーが文字列を入力する(多分)場合があります。私のコンソールプログラムでは、このようなことが起こると、私は画面に沢山のジャンクを印刷します。無限ループに入ります。プログラムの全体がゴミ箱に移動するのではなく、エラーメッセージが表示されるように、どうすればこの問題を処理できますか?C++でランタイムエラーを検出するにはどうすればよいですか?

int x = 0; 
cout << "\n\nEnter a number(1-9): "; 
cin >> x; 
if(x<1 || x>9) 
{ 
    cout<<"\nThe place you entered is invalid. Please enter the correct place number"; 
}else{ 
    cout<<"Correct"; 
} 

私は31^2より上の数字(iは整数データ型の最大値を知っている)か、無限ループに入るchar値を入力した場合。どのように私はこのプロブラムを解決することができます

+0

これは以下の複製です:http://stackoverflow.com/questions/545907/what-is-the-best-way-to-do-input-validation-in-c-with-cin –

答えて

2

cinは、ユーザーからデータを読み取ろうとしたときにタイプが間違っています(たとえば、intが期待される場合は文字列を入力します)。違法(例えば大きすぎる)の場合、cinは「失敗状態」に入り、明示的に問題を解決するまで、その時点からユーザーからの値の読み取りを拒否します。 cinから適切にデータを読み取るのはこれが起こらないようにするのがやや難しいですが、ちょっとしたヘルパールーチンを書いて後のプログラムで呼び出すだけで簡単にすることができます。適切cinからデータを読み出すための一つのアプローチの説明については

、あなたはC++での仕事とどのように適切にデータを読み書きするストリーム方法を説明しているthese course notes from Stanford's CS106L courseをチェックアウトする場合があります。

希望すると便利です。

関連する問題