C++中的cin.ignore()函数不适用于整个流



我试图安全地输入一个介于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(("的匹配函数

您提到的确切错误发生在使用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');

请在此处查看现场演示。使用的编译器版本:GCC 8.2
包含<limits>标头可解决此问题。

最新更新