2017-05-27 41 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

好点,但它会导致无限循环,除非有其他问题 –