我正在尝试为我的游戏中的地图创建一个简单的类。地图是由“砖”结构组成的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使用二进制文件和结构来代替整数。我会如何去做这件事?我所见过的所有方法都是如何将二进制文件中的结构数组存储起来,而不是如何存储多维结构数组。有任何想法吗?
编辑:是的,我可以将二维矢量存储在文件中,但这不会让我做无缝地图加载,我需要。我有大的地图文件,所以一次加载100k瓦片会占用CPU。
'fread'和'fwrite'不是C++。使用'fstream'。 – Dani
@Dani - 不完全正确。 C标准包含在C++标准中,所以在技术上'fread()'和'fwrite()'是C++。不过,我当然同意你的看法,基于流的I/O被认为是更好的风格。 –
@MichaelJ:这是废话。 C++标准*有时包括* C标准的特定版本*中的部分*。 'fread','fwrite',可能它们在那些部分,可能它们不是,但是纯粹的废话来陈述C标准包含在C++标准中。另外,内存泄露和UB是C++标准的一部分,但没有人会考虑推荐它们。 – Puppy