有效地将图案存储在矢量中的文件中

时间:2016-06-04 19:45:47

标签: c++ iterator

目前,我有这个用于从文件中获取数据:

ifstream ifs("input");
istream_iterator<string> begin(ifs),end;

vector<string> students(begin,end);

但是现在文件中的数据有一个模式:

  

string string int ...

我试过这个

ifstream ifs(input);
istream_iterator<string, string, int> begin(ifs), end;

vector<string, string, int> students(begin, end);

但它没有用。

甚至可以这样做,还是必须使用标准for循环?

1 个答案:

答案 0 :(得分:4)

创建一个包含两个字符串和一个int的结构,以及一个重载的operator>>

struct Thingy
{
    std::string a, b;
    int c;
};

std::istream& operator>>(std::istream& is, Thingy& t) {
    return is >> t.a >> t.b >> t.c;
}

然后你可以像这样创建这些对象的向量:

ifstream ifs("input");
istream_iterator<Thingy> begin(ifs),end;

vector<Thingy> students(begin,end);