在调用 boost parseOptions 时保留预设(非默认)值
Keeping preset (non-default) values when calling boost parseOptions
在我的项目中,我有一些内部配置结构,其中包含使用默认值(假设Config.x=0, Config.y=0
(进行选项注册,这些值对于客户端不可修改。
有时我的应用程序的用户希望在解析命令行参数之前修改这些字段的默认值,因此在解析之前,他们只需手动更改这些值(假设Config.x=3, Config.y=4
(,然后获取命令行/.ini ifle 选项并使用 parseOptions 解析它。
如果这些外部参数仅包含这些选项的一部分,即 Config.x=9
,其他选项的值将是使用 boost::p rogram_options 注册的值,而不是当前分配的值,因此结果将是 Config.x=9, Config.y=0
而不是 Config.x=9, Config.y=4
。所以基本上看起来,boost::p rogram_options::p arseOptions 在解析之前清除所有选项。
无论如何可以防止 boost 清除已分配的选项,以防它们没有出现在命令行参数中?
这是不可能的。但是,您应该能够手动¹创建parsed_options
,或者您可以将选项作为"假"配置文件提供,以便您可以实际使用配置文件解析器。
获得parsed_options后,您可以像往常一样存储/通知它们。
¹ 尽管不支持/记录这一点,但请参阅boost::program_option::basic_parsed_options<>
中的评论
相关文章:
- yum :在 CentOS 上使用 Boost 1.69 而不是默认 (1.53) 版本
- 传递 boost::p ython::numpy::ndarray 作为 boost::p ython 函数的(默认或非
- boost::p rogram_options 自定义验证和默认值
- Boost.Spirit.Qi 语法,用于 Boost.Fusion 自适应结构中的默认值
- Boost::msm 如何使用非默认构造函数初始化state_machine_def和 msm::front::sta
- 在调用 boost parseOptions 时保留预设(非默认)值
- Boost Karma:当boost ::可选时,生成默认文本
- 使用Boost Spirit将默认值分配给变量
- Boost HANA:从集合创建地图和默认值
- boost::p rogram_options:是否可以将一个选项设置为另一个选项的默认值
- Boost-Spirit(X3)解析,没有默认构造函数
- 向量值boost :: program_options的默认值
- Boost::序列化 - 如何序列化需要数据分配但没有默认构造函数的数据结构
- 默认模板函数参数中的 boost::shared_ptr 和 nullptr
- 在 boost::lockfree:queue 默认构造函数的情况下断言失败
- C++:为什么 boost::p tr_vector 调整大小需要对象具有默认构造函数
- 如何实例化没有默认构造函数的类型的 boost::fusion::vector 成员变量
- 如何在<string> boost::p rogram_options 中指定矢量的默认值
- boost::statechart:如何定义某个状态的两个子状态,而不指定哪个是默认状态
- 使用默认参数将特定参数传递给 Boost Python 函数