我寻找一些简单而有效的参数容器,将像一个内存-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