将类实例存储在文件中

时间:2016-04-06 02:46:33

标签: c++ class instances

我试图使用c ++创建一个RPG,现在只是一个文本RPG。我想创建很多类的实例" monster"。让我说我需要制作100个怪物(妖精,食人魔,龙等),我应该如何储存这些?我应该有一个专门用于存储类实例的单独文件吗?如果有,如何?我希望将它们全部放在一个文件中,这样就不会占用其他地方的空间。

2 个答案:

答案 0 :(得分:1)

您可以将课程存储在session_decode()文件中,并使用binarywrite

也许这就是你想要做的,这是一个简单的例子。
我们说我们有这个课程:

read

写入的文件:

class Goblin {
public:
    int health;
    int damage;
};

现在我们可以创建一个fstream file("record.bin", ios::trunc | ios::binary | ios::in | ios::out); 对象:

Goblin

然后我们可以将数据写入二进制文件:

Goblin my_goblin;
my_goblin.health = 100;
my_goblin.damage = 50;

运行之后,二进制文件将包含有关file.write(reinterpret_cast<char*>(&my_goblin.health), sizeof(my_goblin.health)); file.write(reinterpret_cast<char*>(&my_goblin.damage), sizeof(my_goblin.damage)); 类的数据。

现在,为了阅读数据,你不希望那里有Goblin标志:

ios::trunc

我们再次创建一个fstream file("record.bin", ios::binary | ios::in | ios::out); 对象:

Goblin

然后我们可以将数据读入我们的课程:

Goblin goblin;

现在打印以查看它是否有效:

if (!file.read(reinterpret_cast<char*>(&goblin.health), sizeof(goblin.health))) {
    // handle error
}
if (!file.read(reinterpret_cast<char*>(&goblin.damage), sizeof(goblin.damage))) {
    // handle error
}

输出:

// Output result if all went well
cout << "Goblin health = " << goblin.health << '\n';
cout << "Goblin damage = " << goblin.damage << '\n';

这真的没必要!

制作基于文字的游戏时,您不需要采用上述方法。只需编写您的类并将它们保存在头文件中。单独声明与实施。

例如:Goblin health = 100 Goblin damage = 50 Goblin.hGoblin.cppDragon.h等。

答案 1 :(得分:0)

您可以在文件中存储对象的实例,这称为序列化,并且有很多方法可以实现它,我建议在这方面进行更多的研究。

我相信你不必为你的程序做这个,因为可能有足够的空间来存储你的所有怪物,然后是一些。