2016-06-04 12 views
0

Derzeit habe ich diese Daten aus einer Datei für das Erhalten:Speichern von Muster in der Datei in einem Vektor effektiv

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

vector<string> students(begin,end); 

Aber jetzt sind die Daten in der Datei hat ein Muster:

string string int .. .

versuchte ich

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

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

Aber es funktioniert nicht.

Ist es überhaupt möglich dies zu tun oder muss ich den Standard für die Schleife verwenden?

+0

Ist es nur * string, string, int, string, string, int, ... * immer und immer wiederholt? –

+2

Sie sollten jetzt die Klasse 'Student' verwenden. – LogicStuff

Antwort

4

Erstellen Sie eine Struktur mit zwei Strings und einem int, zusammen mit einem überladenen 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; 
} 

Dann können Sie einen Vektor dieser Objekte wie so erstellen:

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

vector<Thingy> students(begin,end); 
Verwandte Themen