gpt4 book ai didi

c++ - 如何将结构存储在文件中以便轻松重新加载?

转载 作者:搜寻专家 更新时间:2023-10-31 00:04:16 26 4
gpt4 key购买 nike

我有这两个结构需要存储在文件中。如果不解析结构并将其写入文本文件,我找不到将它们放入文件的好方法,这比我想要的效率低得多。将大部分基元结构放入文件的最简单方法是什么?结构如下

struct object
{
unsigned short id;
float x;
float y;
unsigned short type;
unsigned char flags;
};

struct sector
{
unsigned long id;
unsigned long neighbors[4]; // North,East,South,West
std::vector<object> objects;
};

我已尝试使用下面的代码将结构写入文件,但效果不佳。执行后的文件大小只有4.7kb,应该比这大很多。

sector s;
object o;
s.id = 1;
s.neighbors = {2, 3, 4, 5};
o.id = 1; o.x = 2.0f; o.y = 3.0f; o.type = 4; o.flags = 6;
for(int i = 0; i < 65536; i++)
{
s.objects.push_back(o);
o.id += 1; o.x += 1.0f; o.y += 1.0f; o.type += 1; o.flags += 1;
}

ofstream os("world.dat", ios::binary|ios::out);
s.objects.resize(s.objects.size());
int size = s.objects.size() * sizeof(object);
os.write((char*)&size, sizeof(int));
os.write((char*)&s, size);
os.close();

有什么建议吗?

最佳答案

听起来您可以使用序列化库,例如 boost::serialization .它支持开箱即用的 STL 容器,因此支持示例中的结构应该非常简单。

关于c++ - 如何将结构存储在文件中以便轻松重新加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4503623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com