c++ 输入流的错误机制

#include <iostream>

using namespace std;

int main()
{
	double fish[5] = {};
	int i = 0;
	for (; i < 5; i++)
	{
		while (!(cin >> fish[i]))//先执行输入赋值操作,如果输入的是数字,则会返回true,并进行下一次的判断(还是以输入赋值开始);是数字就会返回false,并进入循环。
		{
			cin.clear();//如果输入的不是数字,就会进入错误状态,需要先清除错误状态
			while (cin.get() != '\n')
			{
				continue;//这一部分会会忽略接下来输入的内容,直到回车
			}
			cout << "请输入数字";
		}

	}
	cout << "鱼的平均质量为:";
	float sum = 0;
	i--;
	for (; i >= 0; i--)
	{
		sum += fish[i];
	}
	cout << (sum / 5.0);

}

在c++中,当使用std::cin进行输入操作时,如果输入的数据格式与规定的不符,则会进入错误状态,拒绝再次读入数据。

  1. 可以使用std::cin.fail()来检测当前是否处于错误状态,如果当前处于错误状态,则返回true。还有一种方法,就是直接使用cin,如果当前不能再次输入(可能是处于错误状态,也可能是因为磁盘错误等其他原因),则会返回false
  2. 如果当前处于错误状态,则不能再输入,可以使用std::cin.clear来清除错误状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值