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()重置输入,然后还可能需要通过读取不合法的输入来丢弃它们。

发布了59 篇原创文章 · 获赞 25 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/m0_37570854/article/details/104777576