我从课程中学到了一门课程。 在其中一个课程中,一个代码应该使用向量从文本文件中执行读写数字。 这是代码:
#include <iostream>
#include <iterator>
#include <fstream>
#include <vector>
#include "Student.h"
//#include ""
using namespace std;
int main()
{
/*cout << "Hello School!" << endl;
Student sarit_student("Sarit Rotshild",12345);*/
ifstream data_file("../../sarit/data.text");
istream_iterator<int> start(data_file), end;
vector<int> data(start, end);
int sum=0;
for(auto it=start; it!=end; ++it)
{
sum+= *it;
}
cout<<"sum = "<< sum<<endl;
cout<<"avg is : "<< 1.0* sum/data.size()<<endl;
return 0;235
}
输入(在文本文件中)是 12 15 18 23 235 但是我得到的输出不正确---&gt; sum = 12 平均值是:2.4
答案 0 :(得分:3)
std::istream_iterators
与“常规”迭代器不同。流迭代器是单通道的。您不能使用相同的迭代器两次 - 因为每个增量都从流中读取数据,并且从流中读取的数据将从流中消失。但这就是你要做的事情:
vector<int> data(start, end);
for(auto it=start; it!=end; ++it)
这里使用迭代器start
两次 - 首先填充向量,而不是迭代流。
要解决您的问题,请在循环中迭代向量,而不是(用完)流。