發表文章

目前顯示的是 6月, 2012的文章

C++ INI 類別的設計

使用INI格式,底下有幾個優點。 格式簡單易懂 、容易使用 編輯器隨處可得,編輯維護相對容易 實作一個INI Parser不難 在程式裡,無論是作為程式設定儲存格式,或是作為小型的資料庫格式,使用INI資料格式對於以上需求,綽綽有餘。Good Game Editor的 資料格式 就是現成的實例。 ; INI的格式內容非常結構化,一個INI是由Section組成,每一個Section裡面可以包含Item,每一個Item是由一對Key和Value組成。 一個Section由字元'['及']'所構成,括號所包圍起來的字串為Section的名稱。如[Player]。 Item由Key及Value成對以字元'='隔開組成。如Name=Waync Cheng。 所有在字元';'後面到行尾的文字都視為註解而被忽略。 底下是一個簡單的範例。 [Player] Name=Waync Cheng Windows提供了 GetPrivateProfileString 系列的API可以讀寫INI的資料內容,使用Windows API寫入INI檔案的方式如下。 char StrName[] = "Waync Cheng" WritePrivateProfileString("Player","Name",StrName,"c:\\test.ini"); 從INI檔案讀出的方法如下。 char StrName[MAX_LEN]; GetPrivateProfileString("Player","Name","DefaultName", StrName, MAX_LEN, "c:\\test.ini"); ; Windows API使用起來稍微不方便,同時也不具跨平台,底下使用C++語言設計一個新的INI讀寫類別,主要的設計考量是更方便的讀寫INI。 C++語言提供了operator  overloading 的機制,正好可以被我們利用來作為一個介面,讓我們可以更直覺的讀寫INI的內容。