C++ 从文本文件中提取特定值(char&;int)并插入多个变量C++;
下面是我需要从中提取数据的文件C++ 从文本文件中提取特定值(char&;int)并插入多个变量C++;,c++,file,ifstream,friend,C++,File,Ifstream,Friend,下面是我需要从中提取数据的文件 auto1 engine: gasoline max_speed: 250 engine_cc: 1980 avg_consumption_urban: 11 avg_speed_urban: 50 avg_consumption: 8 avg_speed: 100 auto2 engine: diesel max_speed: 230 engine_cc: 1600
auto1
engine: gasoline
max_speed: 250
engine_cc: 1980
avg_consumption_urban: 11
avg_speed_urban: 50
avg_consumption: 8
avg_speed: 100
auto2
engine: diesel
max_speed: 230
engine_cc: 1600
avg_consumption_urban: 9
avg_speed_urban: 50
avg_consumption: 6
avg_speed: 80
auto3
engine: hybrid
max_speed: 190
engine_cc: 1450
avg_consumption_urban: 7
avg_speed_urban: 50
avg_consumption: 4
avg_speed: 90
我需要创建三个自动对象,auto1、auto2、auto3
到目前为止,我掌握的代码是:
[我的代码]
我需要修改此方法以跳过“引擎:”、“最大速度:”。。。etc并获取这些属性标题后面的信息,并在相应的属性中插入相应的值
此外,我还需要找到一种让编译器知道的方法,例如在创建auto2时,从文件中获取auto2而不是auto1的信息
friend ifstream& operator>>(ifstream& in, Auto &a)
{
delete[]a.engine;
a.engine = new char[10];
in >> a.engine;
in >> a.max_speed;
in >> a.engine_cc;
in >> a.avg_consumption_urban;
in >> a.avg_speed_urban;
in >> a.avg_consumption;
in >> a.avg_speed;
return in;
}
这个问题与我先前的问题不同。在这里,我需要了解如何从文件中获取数据并将其插入多个变量。解决此问题的一种方法是(例如,
auto1
等),然后使用自定义的操作符>
函数读取对象的实际数据,可能与您已经做的非常类似
不过,输入运算符的功能需要与您现在拥有的有所不同。您可以像您所知道的那样以类似的方式继续,但首先需要阅读每行“标记”(例如引擎:
或最大速度:
),最简单的方法是这样做:
std::string dummy;
in >> dummy >> a.engine;
in >> dummy >> a.max_speed;
我可能不会这样做,因为如果其他程序按照您当前读取的错误顺序写入此文件,该怎么办?相反,我可能会一次又一次地将输入分为两部分,分别是:“
字符、“tag”或“key”和值。然后,您可以检查key,查看要在结构中分配的值
对于将字符串转换为整数,有一个方法可以帮助您
例如:
if (key == "max_speed")
a.max_speed = std::stoi(data);
为什么要为
a.engine
使用动态分配的数组而不是例如std::string
?或者至少如果在编译时使用固定大小的数组。@Alexandru没有帮助?我一直在读你的答案。我还是个新手,无法实现你写的:)我试了又试。就在几分钟前,我意识到我需要在类中修改代码,而不是在上面的方法中修改main。你当时应该已经发表了评论。我正在谷歌上搜索,但我找不到任何与我类似的例子,或者我认为是这样的。谢谢!:)但现在我还有两个问题。在我的朋友ifstream方法中,我是否声明字符串键;?和“数据”,是什么那个?文件?我正试图实现你所说的。但是我运气不好。我需要读更多的内容。在我的friend方法中,我添加了字符串s;getline(In,s);但是我不知道s将存储什么,只是第一行?然后使用s.substr()进行拆分,我也不知道必须插入什么作为参数(我知道第一个是位置,第二个是距离该位置有多少人)@AlexandruNutu你需要到的位置:“
。