【发布时间】:2016-08-03 22:36:36
【问题描述】:
我希望我的程序能够记住它在 .txt 文件中的中断位置,以便在通过循环重复时继续下一个输入。
例如,一个文本文件包含:
Apples
Bananas
Oranges
将通过函数GetItem() 访问,该函数将下一个文件输入附加到项目向量中。如何使函数第一次添加Apples,第二次添加Bananas,第三次迭代添加Oranges?到目前为止,每次调用GetItem() 都会不断将第一个元素添加到向量中,从而得到一个包含以下内容的向量:
Apples
Apples
Apples
因为文件从头开始一直打开。任何帮助将不胜感激。
这是我可以包含的大量代码的简化版本,但会分散问题的主要目的。如果需要代码,我很乐意将其包含在内。
vector<Item*> AddItemToInventory(vector<Item*> inventory) {
if (inptLctn == 'f') {
inptFile.open("TestFood.txt");
if (!inptFile.is_open()) {
cout << "Could not open file." << endl;
exit(1);
}
inptFile >> usrInptName;
inptFile >> usrInptQnty;
inptFile >> usrInptExpr;
inptFile >> usrInptPrice;
}
prdc = new Produce;
prdc->SetName(usrInptName);
prdc->SetQuantity(usrInptQnty);
prdc->SetExpiration(usrInptExpr);
prdc->SetPrice(usrInptPrice);
inventory.push_back(prdc);
return inventory;
}
【问题讨论】:
-
你为什么要关闭文件?
-
怎么样:不要每次都关闭再打开文件?
-
请分享您的代码,以便我们做出有根据的猜测。 :D 是的,或者您正在每次迭代中关闭和打开文件,或者您指向文件的指针没有移动...
-
@ntjess 这是处理文件的正常方式,如果您不关闭并重新打开它,它会自动发生。
-
将其更改为
AddItemToInventory(vector<Item*> inventory, ifstream &inptFile),然后让调用者负责打开和关闭ifstream?
标签: c++ loops fstream ifstream seekg