私はC++が初めてです。私は、コンソールを介してユーザーからほとんどの整数を読み取る必要があるプロジェクトに取り組んでいます。誰かが数字以外の文字を入力するのを避けるために、入力を文字列として読み取り、数字だけが含まれていることを確認してから整数に変換することを考えました。整数を数回チェックする必要があるため、関数を作成しました。
bool isanInt(int *y){
string z;
int x;
getline(cin,z);
for (int n=0; n < z.length(); n++) {
if(!((z[n] >= '0' && z[n] <= '9') || z[n] == ' ') ){
cout << "That is not a valid input!" << endl;
return false;
}
}
istringstream convert(z); //converting the string to integer
convert >> x;
*y = x;
return true;
}
ユーザーが整数を入力する必要がある場合は、この関数を呼び出します。しかし、何らかの理由でこの関数を呼び出すと、プログラムは入力を待機せず、空の文字列を処理する for ループにすぐにジャンプします。何かご意見は?ご協力いただきありがとうございます。