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

时间:2011-05-09 23:53:52

标签: c++ boost configuration boost-program-options boost-propertytree

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

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

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

修改 这是一个插件所以它不会使用命令行选项(因为,它甚至不可能)。

更新

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

3 个答案:

答案 0 :(得分:10)

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

另一方面,

boost::property_tree是一个更通用的库。该库将文本流解析为统一的数据模型。但是需要进行真正的解析 - 了解满足您需求的数据blob。库在查看特定选项字符串时不知道何时需要参数,或者不允许特定选项的特定值或值类型。

答案 1 :(得分:6)

经过深思熟虑后,我认为boost.PropertyTree仍然是最好的解决方案,因为它让我能够在程序中更改选项后保存选项。

答案 2 :(得分:1)

也存在非Boost可能性。 Config4Cpp是我写的一个健壮,易于使用且全面记录的配置文件解析器库。它可以在www.config4star.org获得。

我建议您阅读实用指南手册的Chapter 3 (Preferences for a GUI Application),以阅读Config4Cpp如何做您想做的事情的概述。然后打开入门指南手册,浏览章节23以及章节7.4(您可能更喜欢阅读PDF version of that manual })。这样做可以为您提供足够的详细信息,帮助您确定Config4Cpp是否比Boost更适合您的需求。

顺便说一下,文档中指出的章节和章节很短,所以不用花很长时间阅读。