2017-05-27 4 views
-1

Entschuldigung für das Posten einer Textwand mit Code, aber ich kann nicht herausfinden, warum der Strukturvektor die Werte nicht bekommt.Was ist mit dieser Lesefunktion falsch?

void load() { 
    list.clear(); 
    vector<string> tag; 
    vector<int> points; 
    ifstream scorelist, namelist; 
    scorelist.open("score.txt"); 
    if (scorelist.is_open()) { 
     int scores; 
     while (scorelist.good()) { 
      cin >> scores; 
      points.push_back(scores); 
     } 
     scorelist.close(); 
    } 

    namelist.open("name.txt"); 
    if (namelist.is_open()) { 
     string text; 
     while (namelist.good()) { 
      getline(namelist, text); 
      tag.push_back(text); 
     } 
     namelist.close(); 
    } 

    players games; //Players a struct with elements string name, int score 
    for (int i = 0; i < 10; i++) { 
     games.score = points[i]; 
     games.name = tag[i]; 
     list.push_back(games); //list is a vector<players> 
    } 
} 

Wenn ich zum Beispiel cout << list[0].name hier nichts schreiben würde geschieht, hat die txt Wert.

+1

Haben Sie versucht, in einem Debugger durch den Code zu Schritt? Werden die Dateien korrekt geöffnet? –

+0

Sie überprüfen nie, ob die Dateien wirklich geöffnet werden können. Sie sollten einen 'else'-Zweig hinzufügen und dort eine Fehlermeldung ausgeben. –

+0

_ "wall of text" _ Das ist sicher nicht das, was hier als _wall of text_ betrachtet wird. Die Länge von Text und Code ist in Ordnung. –

Antwort

1

Sie lesen die Noten von cin statt aus dem scorelist Stream. Wechsel:

cin >> scores; 

An:

scorelist >> scores; 
+0

Guter Punkt, aber es würde eine Endlosschleife verursachen, wenn es keine anderen Probleme gibt –