从文件中,如何从C ++中的特定点读取

亚历山德鲁·努图

我想做什么:我需要在void main()中创建3个自动对象。对于每个对象,我都将信息保存在txt文件中。

我如何获取每个对象的信息(引擎,max_speed等)。创建第二个对象时,如何跳过阅读“引擎”以及如何跳过整个汽车。谢谢!

txt文件:(auto.txt)

    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

到目前为止,我所拥有的(我使用此代码并使用了更简单的auto.txt版本来阅读和显示-请参见下面的txt文件的简单版本):

这是我在Auto类中的ifstream方法

    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;
        }

这就是我从void main中的文件读取的方式

    ifstream f("auto.txt", ios_base::in);
        f >> auto1;
        auto1.display();
        f.close();

这是我读过的文字。这是简化版本。

    gasoline
    250
    1980
    11
    50
    8
    100
托马斯·马修斯

在文件格式中,没有有效的方法来定位到给定的记录。记录的大小是可变的,例如,一个引擎速度为100(3个字符),而另一个引擎速度为80(2个字符)。

由于每个字段都在单独的行上,因此您可以阅读每个文本行,在文本开头搜索“ engine”。

这个项目闻起来好像可以使用数据库。

如果必须逐行读取,则最好逐条记录。也就是说,让记录对象从文件中读取其成员。

如果在读取记录之前就获得了文件位置,则可以将信息存储到中,std::map<unsigned int, Engine>并使用文件指针作为映射中的索引。

我是否说过闻起来像可以使用数据库?

另一个想法是读取所有记录并将其推入记录std::vector创建一个std::map<unsigned int, unsigned int>将向量索引映射到文件位置的。

仍然闻起来像您应该使用数据库。

通过将Engine记录放入向量中,您可以创建其他索引表(数据库可以为您创建索引表)。例如,std::map<string, unsigned int>将引擎类型映射到矢量索引。

研究数据库理论,尤其是范式。使用数据库时,您将从这些知识中受益匪浅。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数组中的特定点后如何从列表框中读取文本?

来自分类Dev

如何在python中读取定点数

来自分类Dev

从数组中的特定点继续foreach循环

来自分类Dev

使字符超过C中文件中的特定点

来自分类Dev

如何在HighCharts中显示特定点以显示特定信息

来自分类Dev

如何缩放到Highmaps中的特定点

来自分类Dev

如何在曲线拟合中强制特定点

来自分类Dev

在Spritekit中将SKShapeNode中的特定点居中

来自分类Dev

如何在pygame中隐藏特定点?

来自分类Dev

阻止段落通过CSS中的特定点

来自分类Dev

Biplot R中特定点的文本标签

来自分类Dev

如何为R中的特定点着色

来自分类Dev

如何读取文件中的特定行?

来自分类Dev

Vim:从特定点/位置在文件中向上/向下搜索

来自分类Dev

C ++:如何从.dat文件中的特定行读取

来自分类Dev

数组中的特定点后如何从列表框中读取文本?

来自分类Dev

从C中的文件读取特定行

来自分类Dev

从C中的输入文件读取特定短语

来自分类Dev

从数组中的特定点继续foreach循环

来自分类Dev

如何使用fstream(C ++)从文件中读取特定行

来自分类Dev

如何在列表中的特定点停止

来自分类Dev

删除HTML直到文件中的特定点

来自分类Dev

标记ggplot2中的特定点

来自分类Dev

在Spritekit中将SKShapeNode中的特定点居中

来自分类Dev

Highcharts中特定点的标注

来自分类Dev

如何从大文件中读取特定行?

来自分类Dev

如何在 THREE.Points 对象中单击特定点?

来自分类Dev

C 程序从文件中读取特定行

来自分类Dev

从 c# 中的特定点跳过特定代码?