繁体   English   中英

如何手动将选项插入boost.Program_options?

[英]How do you manually insert options into boost.Program_options?

我有一个使用Boost.Program_options来存储和管理其配置选项的应用程序。 我们目前正在远离配置文件并使用数据库加载配置。 我编写了一个API,通过主机名和实例名从数据库中读取配置选项。 (很酷!)但是,据我所知,没有办法手动将这些选项插入到boost Program_options中。 有没有人用过这个,有什么想法吗? 来自boost的文档似乎表明在该映射中获取内容的唯一方法是使用store函数,该函数可以从命令行或配置文件中读取(不是我想要的)。 基本上寻找一种手动将DB读取值插入到地图中的方法。

我的回答有点太迟了,但是我花了一些时间尝试做类似的事情并找到了一个令人讨厌的明显解决方案(其他任何人都在寻找这个)...

回想一下boost::program_options::variables_map派生自std::map<std::string, boost::program_options::variable_value> ,你可以完成合法的STL地图处理,包括插入......

namespace po = boost::program_options;
po::variables_map vm;
vm.insert(std::make_pair("MyNewEmptyOption", po::variable_value());
vm.insert(std::make_pair("MyNewIntOption", po::variable_value(32, false));
po::notify(vm);

-Edmond-

您是否查看了Boost::Program_Optionsextra_parserallow_unregistered函数? 根据程序的确切运作方式,其中一个或两个应该能够支持您想要的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM