C++ 遇到特定字符时,如何停止读取文件?

C++ 遇到特定字符时,如何停止读取文件?,c++,file,fstream,C++,File,Fstream,我正在尝试读取和打印一个文本文件,它看起来像这样 Date1 Food1-Calories1 Food2-Calories2 Food3-Calories3 * Date2 Food1-Calories1 Food2-Calories2 Food3-Calories3 Food4-Calories4 Food5-Calories5 * Date3 Food1-Calories1 Food2-Calories2 Food3-Calories3 Food4-Calories4 我遇到了麻烦,因为食

我正在尝试读取和打印一个文本文件,它看起来像这样

Date1
Food1-Calories1
Food2-Calories2
Food3-Calories3
*
Date2
Food1-Calories1
Food2-Calories2
Food3-Calories3
Food4-Calories4
Food5-Calories5
*
Date3
Food1-Calories1
Food2-Calories2
Food3-Calories3
Food4-Calories4
我遇到了麻烦,因为食物的数量取决于用户输入的数量。因此,我不能在我的代码中放入特定数量的getline

所以我想在每天结束时添加一个“*”,让文件停止读取。但是,我不知道在第二个while循环中写入什么条件才能使其工作

下面是我想到的示例代码

while(inputFile.good())
{
    std::string date, foodItem, calories;

    getline(inputFile, date, '\n');

    std::cout << date << endl;

    while(the file does not read a '*')
    {
        getline(inputFile, foodItem, '-');
        getline(inputFile, calories, '\n);

        std::cout << foodItem << " " << calories;
    }

    //When a star is read, start this loop again with the next date
}

inputFile.close();
这就是我的程序的样子。但是我要按日期分开食品


我没有足够的分数来发布图像

一般来说,解决方案非常简单,但我不会停止阅读文件

std::string line;
std::vector<std::vector<std::string>> mainList;
std::vector<std::string> currentList;
while(getline(inputFile, line))
{
    if (line == "*") {
        mainList.push_back(currentList);
        currentList = std::vector<std::string>();
    } else {
        currentList.push_back(line);
    }
}
mainList.push_back(currentList);
inputFile.close();

// post process
诸如此类