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
诸如此类