C ++:程序设置 - 提升.属性树或boost.program_options
c++: program settings - boost.PropertyTree or boost.program_options?
我一直在寻找一种解决方案来存储程序设置或选项或配置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 更适合您的需求。
顺便说一下,文档的指示章节和部分很短,因此阅读时间应该不会很长。
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- cmake如何在fedora工作站中找到boost静态库包
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- Boost Graph Library,修复节点大小
- 什么是"#include <boost/functional/hash.hpp> "?
- 基于boost的程序的静态链接——zlib问题
- C++:如何在CLion IDE中安装Boost
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何在boost beast http请求中设置http头
- Boost Spirit,获取迭代器内部语义动作
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 使用Boost Interprocess创建托管共享内存需要很长时间
- Boost-program-options:无值选项的通知器
- 为什么 Boost 使用全局函数覆盖来实现自定义验证程序"Program Options"