【发布时间】:2019-03-13 21:21:08
【问题描述】:
当我运行程序时,输出窗口会打印出“!正在加载数据...”这一行,但它似乎无休止地陷入循环。据我所知,while 循环设置正确,但在关闭后我不知所措。
ifstream myfile("Data.CS.txt");
if (!myfile) { //Always test the file open.
cout << "Error opening output file" << endl;
system("pause");
return -1;
}
cout << endl;
cout << "! Loading Data...";
while (getline(myfile, line)) {
string delimiter = "|";
string delimiter2 = "-=>";
size_t pos = 0;
string tempLine;
string tokenName;
string token;
string token2;
vector <string> storeTokenPairs;
tokenName = line.substr(0, pos);
tempLine = line.erase(0, pos + delimiter.length());
while ((pos = tempLine.find(delimiter2)) != string::npos) {
token = tempLine.substr(0, pos);
storeTokenPairs.push_back(token);
line.erase(0, pos + delimiter2.length());
}
for (int i=0; i<storeTokenPairs.size(); i++)
dictionary.emplace(tokenName, make_pair(storeTokenPairs[i], storeTokenPairs[i+1]));
}
【问题讨论】:
-
哇,我不敢相信我没有看到这个。那么我需要把它改成 tempLine.erase
-
@javaNoob 请不要像您那样编辑问题。您更改了代码的语义,使给定的 cmets 无效。我已恢复您的编辑。如果需要,您可以发布自己的答案。
标签: c++ while-loop text-files ifstream