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

c++ read and write numeric numbers from text file using vector

本文关键字:读取 数字 文件 使用 vector 文本 c++      更新时间:2023-10-16

我从coursera学习一门课程。在其中一节课中,有一个代码应该使用矢量从文本文件中读取和写入数字。这是代码:

#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 1823235然而,我得到的结果并不正确--->总和=12平均值为:2.4

std::istream_iterators不同于"常规"迭代器。流迭代器是单程的。同一迭代器不能使用两次,因为每次增量都从流中读取数据,从流中读出的数据也会从流中消失。但这正是你想要做的:

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

这里迭代器start被使用了两次——第一次是填充向量,第二次是在流上迭代。

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