2017-05-27 4 views
-1

申し訳ありませんが、コードでテキストの壁を投稿していますが、私は構造体のベクトルが値を取得していない理由を理解していないようです。この読み取り機能で何が問題になっていますか?

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> 
    } 
} 

例えば、私はここにcout << list[0].nameを記述した場合は何もTXTのは価値があり、起こりません。

+1

あなたは、デバッガでコードをステップ実行しようとしたことがありますか?ファイルは正しく開きますか? –

+0

ファイルを実際に開くことができるかどうかは決して確認しません。 'else'ブランチを追加してそこにエラーメッセージを出力してください。 –

+0

_ "wall of text" _これは確かにここのテキストの_wallとはみなされません。テキストとコードの長さは問題ありません。 –

答えて

1

scorelistストリームからではなく、cinからスコアを読み取っています。変更:

cin >> scores; 

へ:

scorelist >> scores; 
+0

良い点ですが、他に問題がなければ無限ループが起こります –

関連する問題