2017-03-01 6 views
-1

プロンプトが表示されたときに間違ったデータ型を入力する可能性があることを防ぐ必要があります。例えばC++:cinによって入力されたデータの種類を取得する

、とします

int age 
cout << "What is your age?" << endl; 
cin >> age; 

しかし、私は再びしようとするユーザーにそれをキャッチし、再度プロンプトを表示する代わりに、とにかく存在することになる文字列またはcharでユーザータイプを言うことができますか?同様に:

if (age != dataType(int) || age !=dataType(float) 
cout << "Invalid entry. Please enter a number and try again."; 

編集:私はCINの文字または文字列を取り込むことができることを理解し、私は、この例では、ユーザーはそれを入力して、彼または彼女の年齢を入力することがあるので、それは、int型と一致するかどうかを確認する必要があります例えば「23」。

+0

最初に 'std :: string'を読み込み、' std :: istream'でそれを使用すると、数字の抽出に失敗したかどうかを確認できます。 –

+0

私はあなたがこれが役に立つと思うかもしれないと思います。 http://stackoverflow.com/questions/12721911/c-how-to-verify-is-the-data-input-is-of-the-correct-datatype#12722150 –

答えて

1

手動で文字列を解析する必要があります。特定のタイプ(intなど)のoperator>>のオーバーロードは、入力が確実にそのタイプであると確信している場合に便利です。もちろん、失敗をチェックすることはできますが、もう一度、期待した特定のタイプの1つを読み込めなかった場合は、再度チェックしてください。

しかし、一般に、cinは、文字シーケンス(別名文字列)で操作する基本レベルで文字(「文字入力」)を使用します。

TL; cinstringに入力してから、文字列の内容を自分で解析して、入力されたデータの実際の種類を判断します。

関連する問題