在我的项目中,我有一些内部配置结构包含使用默认值的选项注册(让我们说Config.x=0, Config.y=0
),这些值对于客户端是不可修改的。
有时我的应用程序的用户想要在解析命令行参数之前修改这些字段的默认值,所以在解析之前他们只是手动更改这些值(让我们说Config.x=3, Config.y=4
)然后获取命令行/.ini ifle选项并使用parseOptions进行解析。
如果那些外部参数只包含这些选项的一部分,即Config.x=9
,其他选项的值将是使用boost :: program_options注册的值,而不是当前分配的那些,因此结果将是{{1而不是Config.x=9, Config.y=0
。所以基本上看来,boost :: program_options :: parseOptions在解析之前清除所有选项。
无论如何,如果它们没有出现在命令行参数中,是否会阻止清除已分配的选项?
答案 0 :(得分:0)
这不可能。但是,您应该能够手动创建parsed_options
,或者您可以将选项作为“虚假”配置文件提供,这样您就可以在其上实际使用配置文件解析器。
获得parsed_options后,您可以照常存储/通知它们。
¹虽然不支持/记录,但请参阅boost::program_option::basic_parsed_options<>