2011-01-27 10 views
1

数字(int、float、double、long、unsigned)を使って作業しましたが、コンソールに他の文字を入れたとき(^[[A、または*など)したがって、私のプログラムがクラッシュするerroneous inputからの保護

この誤った入力からプログラムを保護するにはどうすればよいですか?

注:私はいくつかのライブラリ関数、すなわちisdigitまたはisallnumを知っているが、彼らはそれがにstringstreamを介してデータをフィルタリングすることにより、これを行うことが可能ですC++では

+0

ユーザー入力の方法に関するコードを投稿できますか? – CharlesB

+0

私はcin >> –

答えて

0

あまり役立ちません。これを行う方法については、at Stanford's introductory C++ course siteと19ページの整数を読むための完全なコードを参照してください。この章の残りの部分は、C++でI/Oを行う方法についての一般的な情報源です。

1

これをCとC++で行う方法は、すべての入力を文字列として読み取り、文字列を解析することです。

これは、デバッグ/学生/愛好家のプログラム以外の目的にscanf( "%d")やcin >> integerを使用しないでください。

+1

で入力を受け取ります。もちろん、std :: cin >> integer'を使ってコンソールから整数を読むことはできますが、正しいエラー処理を忘れることはできません。逆に、 'scanf("%d ")' – smerlin

+2

のstd :: cinに対する単純なエラー処理では、誤った入力に対して正しいエラー処理ができません:if(!(cin >> integerVar)){cin.clear (); cin.ignore(数値限定 :: max()、 '\ n'); cout << "無効な整数入力です!\ n"; } ' – smerlin

+0

@ smerlin-は動作しますが、137abcのようなものを入力すると、正しい番号137を入力したと誤って認識し、プロンプトなしで次のcin読み込み時に読み込まれるようにcinにabcを残します。 – templatetypedef