C平台下,读入未知数目的输入

这种情况下,我们不知道要对多少个数求和,而是要一直读数直到程序输入结束。

输入结束时,程序将总和写到标准输出:
    #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;
     }
如果我们给出本程序的输入:
  3 4 5 6
那么输出是:
  Sum is: 18
main 中第一行定义了两个 int 变量,命名为 sum 和 value。在 while 条件中,用 value 保存读入的每一个数:
  while (std::cin >> value)
这里所产生的是,为判断条件,先执行输入操作 
  std::cin >> value
它具有从标准输入读取下一个数并且将读入的值保存在 value 中的效果。
输入操作符返回其左操作数
。while 条件测试输入操作符的返回结果,意味着测试 std::cin  .


当我们使用 istream 对象作为条件,结果是测试流的状态。

如果流是有效的(也就是说,如果读入下一个输入是可能的)那么测试成功

如果遇到文件结束符或遇到无效输入时,如读取了一个不是整数的值,则 istream 对象是无效的。

处于无效状态的 istream 对象将导致条件失败。
在遇到文件结束符(或一些其他输入错误)之前,测试会成功并且执行 while 循环体。

循环体是一条使用复合赋值操作符的语句,这个操作符将它的右操作数加到左操作数上。


从键盘输入文件结束符

操作系统使用不同的值作为文件结束符。

Windows 系统下我们通过键入 control—z——同时键入“ctrl”键和“z”键,来输入文件结束符。

Unix 系统中,包括 Mac OS—X 机器,通常用 control—d。


一旦测试失败,while 终止并退出循环体,执行 while 之后的语句。

该语句在输出 sum 后输出 endlendl 输出换行并刷新与cout 相关联的缓冲区。

最后,执行 return,通常返回零表示程序成功运行完毕。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值