C++ 运用cin来控制while循环

C++中有时需要用循环输入数字,而将非数字输入设置为一个错误条件,如:

while (cin >> x >> y)

我们知道,cin时istream类的一个对象,抽取运算符(>>)被设计成使得cin>>x也是一个istream对象,类运算符是使用函数实现的。使用cin>>x时,程序将调用一个函数,该函数返回一个istream值。将抽取运算符用于cin>>x对象,也将获得一个istream对象。因此,整个while循环的测试表达式的最终结果为cin,而cin被用于测试表达式中时,将根据是否成功,被转换为bool值true或false。例如,cin期望用户输入两个数字,如果用户输入了q,cin>>将知道q不是数字,从而将q留在输入队列中,并返回一个被转换为false的值,导致循环结束。

        将这种读取数字的方法与下面更为简单的方法进行比较:

for (int i = 0; i < limit; i++)
	{
		cout << "Enter value #" << (i + 1) << ": ";
		cin >> temp;
		if (temp < 0)
		{
			break;
		}
		ar[i] = temp;
	}

要提前结束该循环,可以输入一个负值。浙江输入限制为非负值。这种限制符合某些程序的需要,但通常需要一种不会将某些竖直排除在外的、终止循环的方式。将cin>>用作测试条件吓出了这种限制,因为它接受任何有效的数字输入。在需要使用循环来输入数字时,如果在输入循环后还需要进行输入,则必须使用cin.clear()重置输入,然后还可能需要通过读取不合法的输入来丢弃它们。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值