2016-10-16 13 views
0

これはちょっと苦労しています。ユーザー入力が整数かどうかを確認するにはどうすればよいですか? 私はやってみた/中...何とかそれは動作しません。入力が整数か0より大きいか確認してください

void pievieno(int *a ,int jaunais,int vecais){ 
int jaunais_skaitlis; 
cout<< "Ievadiet skaitlus" <<endl; 
for (int i=vecais;i<jaunais;i++) 

{ 
    cin >> jaunais_skaitlis; 
    a[i] = jaunais_skaitlis; 
} 

ありがとうございます!

+2

cinは、それが整数を読み取ることができるかどうかをあなたに伝える必要があります。エラーフラグの1つを設定する必要があります。 – Incomputable

答えて

0

を呼び出すと、variableのタイプに応じて、streamは文字を処理してそのような可変タイプに有効なものを取得しようとします。そうでない場合は、streamfailbitが設定されているので、確認することができます。

for (int i=vecais;i<jaunais;i++) 
{ 
    cin >> jaunais_skaitlis; 
    if (cin.fail()) 
    { 
     // abort, user inputed something, which is not integer. 
    } 
    a[i] = jaunais_skaitlis; 
} 

用心 、そのstreamは、実際の入力から何かを抽出することができる限りを尽くします。したがって、123qffe541eと入力すると実際に有効な入力となり、jaunais_skaitlisには123が含まれ、残りの文字はストリームに残ります(したがって、次の反復に失敗します)。

入力全体が整数かどうかを本当に確認したい場合は、必要に応じて一文字か全行のいずれかの数字をstd::stringに読み込み、それを処理する必要があります。

1

入力変数が意図的に整数であると定義しているので、ユーザーの入力のデータ型を確認することはありません。int jaunais_skaitlis;。したがって、ユーザーが何を入力しても、入力のための整数値が得られます。しかし、あなたはそれが多分integer以外の何か、floatするデータ型を定義し、次にその整数、浮動小数点数または何か他のものかどうかを確認何を

を行うことができます。

+1

しかし、ユーザーが例えばプログラム全体のようにcharを入力した場合、ちょうど.... – Krichukzz

+0

入力が 'a'であるかどうかを確認するには? – songyuanyao

+0

ここで問題のドメインを正しく理解していません。プログラムの目的に応じて、この問題を解決する方法はたくさんあります。 ASCII値も簡単に比較して比較することができます。このために、 'char'を使って入力変数を初期化することができます。 – Pragun

1

ユーザーの入力を文字列で受け入れ、その内容を確認する必要があります。 ユーザーの入力を確認する方法はたくさんあります。最も強力な方法は正規表現です。

関連する問題