问题描述
运行 《Essential C++》练习 1.6 的代码示例:
编写一个程序,从标准输入设备读取一串整数,并将读入的整数依次放到 array 及 vector,然后遍历这两种容器,求取数值总和。将总和及平均值输出至标准输出设备。
程序一直处于while( cin >> temp )
循环中,等待命令窗口的输入,无法跳出循环执行之后的代码。
代码如下:
// 使用vector实现
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> ivec;
int ival;
while ( cin >> ival )
{
// 将新输入内容添加到ivec之后
ivec.push_back( ival );
}
// 我们可以在数值被输入时就实时计算总和
// 这里的做法是遍历vector的元素,一一累加
int sum = 0;
for (int ix = 0; ix < ivec.size(); ix++)
{
sum += ivec[ ix ];
}
int average = sum / ivec.size();
cout << "Sum of " << ivec.size()
<< " elements: " << sum
<< ". Average: " << average << endl;
return 0;
}
输入数据并回车,仍处于循环中。
解决过程
搜索 “while ( cin >> ival )” 相关问题。参考优快云论坛中的讨论,跳出循环的方法包括:
- 输入与定义不同的数据类型。上述代码定义的为 int 整型。
- 使用 Ctrl+D 或 Ctrl+C来终止输入流。具体内容可以参考冲出黑暗的博客。
最好不要使用 while ( cin >> ival ) 循环。