1.4.4 读入未知数目的输入
对1.4.1小节的求和程序稍作改变,还可以允许用户指定一组数求和。这种情况下,我们不知道要对多少个数求和,而是要一直读数直到程序输入结束。输入结束时,程序将总和写到标准输出:
#include <iostream> int main() { int sum = 0, value; // read till end-of-file, calculating a running total of all values read while (std::cin >> value) sum += value; // equivalent to sum = sum + value std::cout << "Sum is: " << sum << std::endl; return 0; } |
如果我们给出本程序的输入:
那么输出是:
与平常一样,程序首先包含必要的头文件。main中第一行定义了两个int变量,命名为sum和value。在while条件中,用value保存读入的每一个数:
while (std::cin >> value) |
这里所产生的是,为判断条件,先执行输入操作
它具有从标准输入读取下一个数并且将读入的值保存在value中的效果。输入操作符(1.2.2节) 返回其左操作数。while条件测试输入操作符的返回结果,意味着测试std::cin。
当我们使用istream对象作为条件,结果是测试流的状态。如果流是有效的——也就是说,如果读入下一个输入是可能的——那么测试成功。遇到文件结束(end-of-file)或遇到无效输入时,如读取了一个不是整数的值,则istream对象是无效的。处于无效状态的istream对象将导致条件失败。
在遇到文件结束(或一些其他输入错误)之前, 测试会成功并且执行while循环体。循环体是一条使用复合赋值操作符的语句,这个操作符将它的右操作数加到左操作数上。< xml:namespace prefix = std />
【责任编辑:
董书 TEL:(010)68476606】