我试图确保用户输入是一个正整数,并且无论用户尝试输入什么,我的函数都能正常工作。
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 等,但他们总是设法错过一些问题。