C ++:程序设置 - 提升.属性树或boost.program_options

c++: program settings - boost.PropertyTree or boost.program_options?

本文关键字:boost program options 属性 提升 程序 设置      更新时间:2023-10-16

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

在我的搜索中,我遇到了助推器。属性树似乎是一个不错的选择。 我知道 boost 是备受推崇的代码,所以我很习惯使用它,所以我开始使用它进行开发。 然后我遇到了boost.program_options它似乎允许您做同样的事情,但看起来更适用于程序设置的特定用例。

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

编辑:仅供参考,这是针对插件的,因此它不会使用命令行选项(例如,这甚至是不可能的)。

更新

我最终坚持了提升。属性树。 我需要能够将更改的选项保存回 INI,但我没有看到用 boost.program_options 做到这一点的方法。

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

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

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

也有非 Boost 的可能性。Config4Cpp 是我编写的一个健壮、简单易用且文档齐全的配置文件解析器库。它可在 www.config4star.org 获得。

我建议您阅读实用使用指南手册的第 3 章(GUI 应用程序的首选项),以阅读 Config4Cpp 如何做您想要的事情的概述。然后打开入门指南手册,略读第 2 章和第 3 章以及第 7.4 节(您可能更喜欢阅读该手册的 PDF 版本)。这样做应该为您提供足够的详细信息,以帮助您确定 Config4Cpp 是否比 Boost 更适合您的需求。

顺便说一下,文档的指示章节和部分很短,因此阅读时间应该不会很长。