C++ 中cin错误处理的问题

C++PrimerPlus中197页的一段代码intfill_array(doublear[],intlimit){usingnamespacestd;doubletem... C++ Primer Plus 中197页的一段代码
int fill_array (double ar[], int limit)
{
using namespace std;
double temp;
int i;
for (i = 0; i < limit; i++)
{
cout << "Enter value #" << (i + 1) << ": ";
cin >> temp;
if (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "Bad input; input process terminated.\n";
break;
}
else if (temp < 0)
break;
ar[i] = temp;
}
return i;
}
不明白if语句块中错误输入处理的意思,能帮忙解释一下吗?
!cin具体是指哪几种情况,还有while一块的功能是怎么样的?
那请问
while (cin.get() != '\n')
{continue;}
是什么意思呢?
展开
 我来答
longinus_dean
2011-11-20 · TA获得超过2282个赞
知道小有建树答主
回答量:1097
采纳率:50%
帮助的人:1525万
展开全部
这么做是因为cin是std::basic_istream的一个实例对象,实例对象就是一个类的实例,简单的说就是用“.”可以引用类公共非静态成员函数的东西。而basic_istream是重载过operator bool操作符的,重载这个操作符的作用是可以返回boolean类型的变量。而basic_istream的operator bool和成员函数good()的意义一样,也就是说

if(!cin)完全等同于if(!cin.good())

这样就明白了吧,也就是good是什么意思呢,就是在io操作没有错误发生,并且io操作有效的时候返回true,有错误发生或者无效的时候返回false,详细可以参考“参考资料”。

参考资料: http://en.cppreference.com/w/cpp/io/basic_ios/good

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式