ユーザー入力が正の整数であることを確認しようとしています。ユーザーが何を入力しようとしても、関数が機能するようになっています。
int getNumber()
{
string userInput;
int userNumber;
bool badInput = true;
cout<<"Enter a positive integer: ";
cin>>userInput;
while (badInput)
{
for (int i=0; i<userInput.length(); i++)
{
if (isdigit(userInput[i]))
{
badInput = false;
}
else
{
badInput = true;
cout<<"That wasn't a valid input, try again: ";
cin>>userInput;
break;
}
}
}
userNumber = atoi(userInput.c_str());
return userNumber;
}
これを行うためのよりクリーンな方法はありますか、それともこれが最善の方法ですか?cin.badなどを使用するなど、他のさまざまな方法を試しましたが、常に問題を見逃してしまいました。