我尋找一些簡單而有效的參數容器,將像一個內存-XML文件表示(或ini文件,作爲另一樣品)。C++ - 參數問題
我的意思是,基本上它可以存儲的每個部分參數部分及組合,可以很方便地存取像GetValue("ParameterName")
和簡單的返回值鑄造。
如果它是可序列化的將會很棒。
我昨天寫類似的東西的,那麼,它很適合我的需要,但可能有一些東西更方便靈活可用?
也許某種參數圖的boost
?
謝謝
我尋找一些簡單而有效的參數容器,將像一個內存-XML文件表示(或ini文件,作爲另一樣品)。C++ - 參數問題
我的意思是,基本上它可以存儲的每個部分參數部分及組合,可以很方便地存取像GetValue("ParameterName")
和簡單的返回值鑄造。
如果它是可序列化的將會很棒。
我昨天寫類似的東西的,那麼,它很適合我的需要,但可能有一些東西更方便靈活可用?
也許某種參數圖的boost
?
謝謝
看看boost::program_options。它可以完成你想要的任務以及更多:INI文件解析,環境變量解析,命令行選項解析和可擴展性。
你有沒有考慮std::map<>?
說不上來,如果它是矯枉過正與否,但在肌肉Message class做所有你上面列出的東西。您可以使用它來序列化任何類型的數據(結構化或不結構化),或通過ParseFile()/UnparseFile()將其用作內存容器,以便解析.ini樣式的配置文件。
您可以使用Boost.PropertyTree。
它讀取和寫入xml和ini文件。
它存儲的參數爲一棵樹,你可以使用點符號訪問值:
std::string value = pt.get<std::string>("debug.filename");
您還可以使用插入新的價值觀:
pt.put("debug.filename", fileName);
現在我使用的包裝圍繞'boost :: unordered_map',可以很容易地切換到'std :: map'(我仍然非常喜歡基於哈希的結構:)但是'boost'和其他模板庫實際上以解決任何問題而聞名,所以,我認爲更方便的東西可能存在... – 2010-07-24 00:47:57
Consideri他會打算使用std :: map,我想知道可能最簡單的序列化方法是什麼? – Vargas 2010-07-24 00:49:48
@Vargas **'boost :: serialize',我懷疑**在我的情況下,我不得不爲'boost :: unordered_map'編寫自定義的序列化例程,並且它並不像前面那麼強硬:) – 2010-07-24 00:51:56