输入和输出具有二进制的多维向量

时间:2012-06-23 13:50:02

标签: c++ file stl input

我正在尝试在游戏中为地图创建一个简单的类。地图是由“平铺”结构组成的2维向量。我正试图找出在行中输入/输出这些图块的最佳方法。

例如,我曾经使用基于.txt的加载格式。 .txt文件如下所示:

1 0 2 0 0 0 2 4 5 6 3 
2 4 5 0 0 0 2 0 0 3 4
0 3 5 2 5 3 0 5 5 3 4
0 2 0 5 0 6 0 5 7 8 4

然后我会逐行查找每个图块的ID整数。 1代表草,0代表水,依此类推。当解析器到达一行的末尾时,它将跳到下一行的整数。

现在我正在尝试通过fwrite和fread使用二进制文件和结构而不是整数。我该怎么做呢?我所看到的是如何在二进制文件中存储结构数组,而不是如何存储结构的多维数组。有什么想法吗?

编辑:是的,我可以将2D矢量存储在文件中,但这不允许我进行无缝地图加载,这是我需要的。我有大量的地图文件,因此一次加载100k的瓷砖会占用CPU。

1 个答案:

答案 0 :(得分:0)

如果您希望地图是人类可读的,则需要编写解析器。

但是,如果你不在乎,你应该做一些完全不同的事情:使用序列化,例如来自Boost

对于您的案例而言,第三种替代方案是游戏,它将地图存储为图像文件。然后,您可以在您喜欢的图像处理程序中编辑地图,并且您的程序可以轻松解释它。 许多图书馆可以为您读取图像数据(并以二维阵列的形式呈现给您),在游戏中您可能已经拥有类似的图像数据。