我正在尝试安全地输入1到25之间的整数,但是我被告知要使用的代码无法正常工作。那是代码:
*int SafelyInputInteger(int lowerBound, int upperBound)
{
int intNumber;
do {
cout<<"Input a number: "; cin>>intNumber;
if(cin.fail())
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
continue;
}
} while((intNumber<lowerBound)||(intNumber>upperBound));
return intNumber;
}
int main()
{
int height;
height=SafelyInputInteger(1,25);
cout<<"Height is: "<<height<<endl;
return 0;
}*
我得到的错误如下: 错误:未在此范围内声明“ numeric_limits” 错误:“>”令牌之前的预期主表达式 错误:没有匹配的函数可以调用'max()'
答案 0 :(得分:1)
您提到的确切错误是在使用GCC进行编译时出现的,其中不包括<limits>
标头。
<source>: In function 'int SafelyInputInteger(int, int)':
<source>:16:24: error: 'numeric_limits' was not declared in this scope
cin.ignore(numeric_limits<streamsize>::max(),'\n');
^~~~~~~~~~~~~~
<source>:16:49: error: expected primary-expression before '>' token
cin.ignore(numeric_limits<streamsize>::max(),'\n');
^
<source>:16:56: error: no matching function for call to 'max()'
cin.ignore(numeric_limits<streamsize>::max(),'\n');
参见现场演示here。使用的编译器版本:GCC 8.2
包含<limits>
标头可以解决此问题。