2016-07-27 7 views
1

Ich versuche, Daten aus einer Datei zu lesen und verwenden Sie es zum Ausfüllen eines Vektors.Füllen Sie einen Vektor von Objekten mit Daten aus einer Datei gelesen

Es ist ein vector von Score Objekte.

Die Klasse 10 hat nur zwei Variablen, eine int Variable und eine char* Variable.

Dies sind die einzigen zwei Daten in der Datei für jedes Score-Objekt. In der Datei gibt es eine Punktzahl (int) und eine Zeit (char*), dann eine neue Zeile.

Dies sind, was ich versuche, aus der Datei zu lesen, um die vector von Score mit zu füllen.

Ich habe ein paar Beispiele gesehen, wie:

std::ifstream ifs("data.txt"); 
std::copy(std::istream_iterator<double>(ifs), std::istream_iterator<double>(), 
     std::back_inserter(values)); 

Allerdings war ich es zu replizieren nicht in der Lage, ein Objekt anstelle einer Variablen.

Wie würde ich das machen? Es muss nicht notwendigerweise istream_iterator verwenden.

Vielen Dank im Voraus für jede Hilfe!

Antwort

2

Gegeben eine Klasse 10;

struct Score { 
    int score; 
    std::string time; 
}; 

Sie eine Eingabe-Operator (operator >>) für den Strom und diese Art (Score) benötigen, dann ist die Technik, die Sie sollten verwenden arbeiten (es wird ein Wechsel der Typen erfordern);

std::ifstream& operator>>(std::ifstream& fs, Score& s) 
{ 
    // construct sentry as required 
    fs >> s.score; 
    fs >> s.time; 
    return fs; 
} 

Hinweis; Angesichts des relativen Mangels an Details für das Datenformat im OP habe ich die Fehlerprüfung für die Zeit usw. weggelassen und das Sentry-Objekt weggelassen, um sich auf die Fähigkeit des Codes zu konzentrieren, den Stream-Extraktionsoperator zu verwenden.

Verwandte Themen