c ++:程序设置 - boost.PropertyTree或boost.program_options?

Use*_*ser 12 c++ configuration boost boost-program-options boost-propertytree

我一直在寻找一种在C++中存储程序设置或选项或配置的解决方案.这些可能是在GUI中公开的设置,需要在我的代码运行之间保存.

在我的搜索中,我遇到了boost.PropertyTree,这似乎是一个不错的选择.我知道boost是备受推崇的代码,所以我很习惯使用它,所以我开始使用它开发.然后我遇到了boost.program_options,它似乎允许你做同样的事情,但也看起来更专业的程序设置的具体用例.

现在我想知道哪个最适合这份工作?(或者是第三种选择比两者都好)

编辑: fyi这是一个插件,所以它不会使用命令行选项(因为,甚至不可能).

UPDATE

我最后坚持使用boost.PropertyTree.我需要能够将更改的选项保存回INI,并且我没有看到使用boost.program_options执行此操作的方法.

wil*_*ell 10

使用boost::program_options.这正是它的用途.在一个库中,您可以获得命令行选项,环境变量选项和类似INI的配置文件解析器.并且它们都以正确的方式集成在一起,因此当用户在多个源中指定相同的选项时,库知道要考虑的正确优先级顺序.

boost::property_tree另一方面,它是一个更通用的库.该库将文本流解析为统一的数据模型.但是需要进行真正的解析 - 根据你的需要理解数据块.库在查看特定选项字符串时不知道何时期望参数,或者不允许特定选项的特定值或值类型.


Use*_*ser 6

经过一番挖掘后,我认为boost.PropertyTree仍然是最好的解决方案,因为它使我能够在程序中更改它们之后保存选项,这是一项要求.