【发布时间】:2020-04-30 11:25:49
【问题描述】:
我正在编写一个简单的函数,它应该将用户的输入作为字符串读取。检查字符串是否仅由数字组成,然后将其转换为 int 并返回。问题是无论输入如何,循环都从未使用过。我正在努力寻找问题的根源。
int correctInt()
{
string temp;
int input;
bool m;
do
{
m = false;
getline(cin, temp);
int length=temp.length();
for (int a = 0; a < length; a++)
{
if (temp[a] < '0' && temp[a]>'9')
{
cout << "ID should consist of numbers. Try again: ";
m = true;
break;
}
}
if (!m)
{
return input = atoi(temp.c_str());
}
} while (1);
}
提前谢谢你
【问题讨论】:
-
temp[a]能否同时小于'0'和大于'9'? -
循环已执行,但您需要查看循环内的
if。< '0'和> ' 9'同时是什么字符?投票结束为拼写错误 -
或者只使用内置验证的
std::stoi。 -
如果你在所有情况下都打印一些东西,你会看到循环被输入。误诊问题通常会使您在错误的位置寻找错误。