c++ - 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>
标头可解决此问题。
推荐阅读
- java - 如何在 ProdctData JSON 中填充自定义属性?
- r - 基于 dplyr tidyr 的子集在 R 中不起作用
- asp.net-mvc - 在 nopcommerce 4.2 中,“HttpRequest”不包含“浏览器”的定义
- mysql - 问题与mysql中的程序有关
- prompt - 鱼壳暂时禁用所有提示
- django - 如何将数据从一个输入字段提供给 Django 生成表单的两个输入字段?
- python - 无法修复python中的文件处理问题
- laravel - 将应用程序从宅基地移动到 docker
- android - 以编程方式将我的应用程序添加到自动启动应用程序列表和运行状态
- html - 如何垂直对齐1顶部2底部图片