遊戲中提供很多可供配置的設定,有利用適應多種不同的硬體配置,也有利於適應用不同玩家的操作習慣.
如果每次進遊戲的話都要重設一次,這顯然就失去了配置的意義,不如用乙個適用範圍比較廣的預設值算了.
所以,配置需要儲存.
windows中就有眾多的的ini檔案,還有一些軟體會把資訊存入登錄檔.但是,當配置資訊較多或是對安全性有所考慮時,這就不太適合了.而且,解析ini檔案(或xml)等文字格式的配置,也是一件比較麻煩的事.另一種比較方便的方法就是採用二進位制儲存,直接把記憶體中的資料轉儲,下次用的時候再重新讀回來,就像xp的休眠功能一樣.
跟其他語言不同,c++本身並沒有提供序列化的支援.不過這也給了我們自由發揮的空間,呵呵
比如,你用乙個struct來儲存某些配置:
struct
gameconfig
config;
簡單地儲存到檔案的方法就是直接用流輸出:
using
namespace
std;
ofstream outfile(
"config.cfg
", ios::
out|
ios::binary);
if(outfile)
下次直接讀取到結構體裡就可以了:
using
namespace
std;
ifstream infile(
"config.cfg
", ios::in|
ios::binary);
if(infile)
不過這樣有個缺點,就是一旦結構體改變,存檔資料就沒法用了.所以,檔案頭還需要一些資訊來描術這個配置檔案,比如檔案版本,檔案配置數目等等,讀取的時候按byte乙個個的讀,這樣就可以相容老的版本資料,做出合適的處理了.
序列化(序列化)
原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...
序列化(模型序列化 序列化巢狀)
from rest framework import serializers from meituan.models import merchant,class merchantserializer serializers.modelserializer class meta model merch...
序列化和解序列化
serialize 返回乙個字串,包含著可以儲存於 php 的任何值的位元組流表示。unserialize 可以用此字串來重建原始的變數值。用序列化來儲存物件可以儲存物件中的所有變數。物件中的函式不會被儲存,只有類的名稱。要能夠unserialize 乙個物件,需要定義該物件的類。也就是,如果序列化...