2010-07-24 86 views
4

我尋找一些簡單而有效的參數容器,將像一個內存-XML文件表示(或ini文件,作爲另一樣品)。C++ - 參數問題

我的意思是,基本上它可以存儲的每個部分參數部分及組合,可以很方便地存取像GetValue("ParameterName")和簡單的返回值鑄造。

如果它是可序列化的將會很棒。

我昨天寫類似的東西的,那麼,它很適合我的需要,但可能有一些東西更方便靈活可用?

也許某種參數圖的boost

謝謝

回答

8

看看boost::program_options。它可以完成你想要的任務以及更多:INI文件解析,環境變量解析,命令行選項解析和可擴展性。

4

你有沒有考慮std::map<>

+0

現在我使用的包裝圍繞'boost :: unordered_map',可以很容易地切換到'std :: map'(我仍然非常喜歡基於哈希的結構:)但是'boost'和其他模板庫實際上以解決任何問題而聞名,所以,我認爲更方便的東西可能存在... – 2010-07-24 00:47:57

+0

Consideri他會打算使用std :: map,我想知道可能最簡單的序列化方法是什麼? – Vargas 2010-07-24 00:49:48

+0

@Vargas **'boost :: serialize',我懷疑**在我的情況下,我不得不爲'boost :: unordered_map'編寫自定義的序列化例程,並且它並不像前面那麼​​強硬:) – 2010-07-24 00:51:56

2

說不上來,如果它是矯枉過正與否,但在肌肉Message class做所有你上面列出的東西。您可以使用它來序列化任何類型的數據(結構化或不結構化),或通過ParseFile()/UnparseFile()將其用作內存容器,以便解析.ini樣式的配置文件。

1

您可以使用Boost.PropertyTree

它讀取和寫入xml和ini文件。

它存儲的參數爲一棵樹,你可以使用點符號訪問值:

std::string value = pt.get<std::string>("debug.filename"); 

您還可以使用插入新的價值觀:

pt.put("debug.filename", fileName);