如何告诉程序从哪里开始读取.txt文件?

时间:2016-08-03 22:36:37

标签: c++ loops fstream ifstream seekg

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

1 个答案:

答案 0 :(得分:3)

在使用之前打开文件,并在使用完毕后关闭它。问题是你不断关闭输入文件,所以当你重新打开它时,它会再次从头开始。

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