2017-05-27 44 views
-1

對不起,用代碼發佈了一段文字,但我似乎無法弄清楚爲什麼struct向量沒有獲取值。這個讀取功能有什麼問題?

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。文本和代碼的長度很好。 –

回答

1

您正在閱讀cin而非scorelist流的分數。更改:

cin >> scores; 

要:

scorelist >> scores; 
+0

好點,但它會導致無限循環,除非有其他問題 –