cin,clear()应用

#include<iostream>
const int Max = 5;
int main()
{
	using namespace std;
	int golf[Max];
	cout << "Please enter your golf scores.\n";
	cout << "You must enter " << Max << " rounds.\n";
	int i;
	for (i = 0; i < Max; i++)
	{
		cout << "round #" << i + 1 << ": ";
		while (!(cin >> golf[i]))
		{
			cin.clear();
			while (cin.get() != '\n')
				continue;
			cout << "Please enter a number: ";
		}
	}
	double total = 0.0;
	for (i = 0; i < Max; i++)
		total += golf[i];
	cout << total / Max << " =average score " << Max << " rounds\n";
	system("pause");
	return 0;
}

如果输入 88,则cin>>golf[i]表达式为ture,!(cin>>golf[i])为false,则程序结束循环返回到for;如果输入must it 则cin>>golf[i]表达式为false,!(cin>>golf[i])为ture,则会出现cin输入错误
fail() 被设定为真 failbit被设定 cin被标记错误 不可用( 意思是 出现不匹配 )然后就得用clear()清除错误状态 就是清除错误状态 (也就是把failbit设置为0)然后还得用 while(cin.get()!='\n')
continue;吸收缓冲区 也就是错误字符后面的字符之类的;

就是说如果输入123ab456的话,首先会接受到123,然后if(!cin)发现不是匹配的类型,出错,failbit被设定了,然后用clear()把被设定的failbit修改到原来的状态,接着继续接受456,直至遇到换行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值