一、题目
输入一组数求和!
我们预先不知道要对多少个数求和,就需要不断读取数据直到没有新的输入为止。
二、求解
代码
#include <iostream>
int main()
{
int sum = 0, value = 0;
//读取数据,知道没有新的数据
while (std::cin >> value)
sum += value;
std::cout << "sum is:" << sum << std::endl;
return 0;
}
结果
输入:
1 2 3 4
输出:
sum is:10
三、要点
1、数据读取操作是在while的循环条件中完成的
while (std::cin >> value)
2、循环条件实际上检测的是std::cin。当使用一个istream对象作为条件时,效果是看流的状态。如果流是有效的,流没有错误,条件就是成功。反之输入无效,条件失败。所以结束循环的方法是输入无效(例如:要求输入整型却输入字符串或字符)或者输入文件结束符都可以。
3、文件结束符
Windows系统中,先Ctrl + Z,后enter。
Unix或Mac OS系统中,Ctrl + D。
四、输入举例
1、一次读入一个词
#include <iostream>
using namespace std;
int main()
{
string str;
while(cin >> str)
{
cout << str << endl;
}
return 0;
}
2、一次读入一整行
#include <iostream>
using namespace std;
int main()
{
string str;
while(getline(cin, str))
{
cout << str << endl;
}
return 0;
}
输入结束使用Ctrl + z,然后按Enter。