在程序的编写过程中会遇到这样的情况,有时候我需要得到输入的量,但是又不知道输入的量有多少,那此时怎么把这些输入的量获取呢? 一开始我想的是使用for或者while循环来逐个获取输入,但是我不知道输入的个数具体有多少,那么判断的时候又不好判断,这可如何是好?
后来发现了一种比较快捷的方法,但是前提是必须对C++中的cin和cout有深刻的理解。代码如下:
#include <iostream>
int main()
{
int sum = 0, value = 0;
//读取数据直到遇到文件尾,计算所有输入的值的和
while(cin >> value)//此处是重点
{
sum += value;
}
cout << " sum is: "<< sum <<endl;
return 0;
}
如果输入 1 2 3 4
结果输出 sum is:10
while循环的判据就是表达式cin >> value,这个表达式代表从标准输入中读取下一个数,保存在value中。输入运算符返回的是其左侧的对象,即cin。故这个循环检测的实际上是cin。
当使用一个istream(即cin)对象作为条件时,其效果是检测流的状态。若流有效,没有遇到错误,那么检测成功。当遇到文件结束符或者无效输入(本例中无效输入为非整型)时,cin会处于无效状态,循环会停止。