2010-07-24 48 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);