我正在嘗試爲我的遊戲中的地圖創建一個簡單的類。地圖是由「磚」結構組成的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