目前,我有这个用于从文件中获取数据:
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循环?
答案 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);