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

时间:2018-11-03 14:05:00

标签: c++ stream

我正在尝试安全地输入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()'

1 个答案:

答案 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>标头可以解决此问题。