-3

我希望我的程序能够记住它在.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;
}

4

1 回答 1

3

使用前打开文件,使用完毕后关闭文件。问题是您不断关闭输入文件,因此当您重新打开它时,它又从头开始。

您应该只打开和关闭一次输入文件。

于 2016-08-03T22:40:06.413 回答