问题:从键盘输入不定量的数据,输出其和。

代码

#include <iostream>

int main()
{
    int value = 0,sum = 0;
    while(std::cin >> value)
    {
        sum += value;
    }
    std::cout << "这些数的和是:" << sum << std::endl;
    
    return 0;
}

解释

表达式std::cin >> value 是从标准输入中读取下一个数,保存在 value 中。输入运算符>> 返回其左侧运算对象,在本例中是 std::cin,因此,次循环条件实际上就是检测std::cin

当我们使用一个 istream 对象作为条件时,其效果就是检测流的状态。如果流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符,或者遇到一个无效的输入时,istream 对象的状态就会变为无效。处于无效状态的 istream 对象会使条件为假。

因此,我们的 while 循环会一直执行直到遇到文件结束符(或输入错误)。

那么,什么是文件结束符,如何从键盘输入文件结束符

对于不同的操作系统而言,有着不同的约定。在 Windows 系统中,输入文件结束符的方法是 Ctrl + Z,然后按 Enter 键。在 Unix 系统中,包括 Mac OS X 系统中,文件结束符的输入是用 Ctrl + D。

image-20210316184721860