c ++使用向量从文本文件中读取和写入数字

时间:2016-03-23 16:14:27

标签: c++

我从课程中学到了一门课程。 在其中一个课程中,一个代码应该使用向量从文本文件中执行读写数字。 这是代码:

#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

1 个答案:

答案 0 :(得分:3)

std::istream_iterators与“常规”迭代器不同。流迭代器是单通道的。您不能使用相同的迭代器两次 - 因为每个增量都从流中读取数据,并且从流中读取的数据将从流中消失。但这就是你要做的事情:

vector<int> data(start, end);
for(auto it=start; it!=end; ++it)

这里使用迭代器start两次 - 首先填充向量,而不是迭代流。

要解决您的问题,请在循环中迭代向量,而不是(用完)流。