编写程序读取文本文件并将其存储在结构中。 文本文件示例:
chicken
dog
car
765
当行中有一些文本时,它将被存储到结构中。 我尝试了以下操作:
getline(file, aLine);
Info.animalchicken = aLine;
getline(file, aLine);
Info.animaldog = aLine;
getline(file, aLine);
Info.car = aLine;
getline(file, aLine);
Info.number = aLine;
我意识到getline实际上是获取每一行。 当我在我的程序中运行这个时,鸡将被存储在结构info.animalchicken中。 下一行为空,将存储到info.animaldog中。 Dog将存储在info.car等中。
我认为这里需要一个控制循环,但我想不出一个好的。 我怎样才能忽略空行,这样我的文本才能正确地进入结构?
这是我的结构
struct Info {
string animalchicken;
string animaldog;
string car;
int number;
}
循环的思想,虽然相当原始,但应该起作用; 最简单的方法是将逻辑包装在一个单独的函数中:
std::string getlineFilterEmpty(std::istream& s) {
std::string line;
do {
if (!s) {
throw std::runtime_error("End of stream");
}
getline(s, line);
} while(line[0] == '\n');
return line;
}
那么获取您的值就很简单:
Info.animalchicken = getlineFilterEmpty(file);
Info.animaldog = getlineFilterEmpty(file);
Info.car = getlineFilterEmpty(file);
number
成员需要将字符串解析为整数,您可以在so的其他位置找到该字符串的代码。