我有一个使用Boost.Program_options存储和管理它的配置选项的应用程序。目前,我们正在从配置文件中远离,并利用数据库加载配置,而不是。我已经写了由主机名和实例名从数据库中读取配置选项的API。 (爽!)但是,据我可以看到有没有办法手动插入这些选项进入升压Program_options。有没有人使用此之前,任何想法?从boost的文档似乎表明得到的东西的唯一办法在地图是由商店功能,无论是在命令行或配置文件(不是我想要的)读取。基本上,寻找一种方式来手动插入数据库中的地图读取值。

有帮助吗?

解决方案

我的回答而来的,是有点晚了,但我花了一些时间,试图做同样的事情,发现了一个烦人明显的解决方案(柜面其他人正在寻找这一点)...

回顾boost::program_options::variables_mapstd::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-

其他提示

让你看着extra_parserallow_unregisteredBoost::Program_Options的功能呢?根据究竟如何你的程序操作,一个或两个人应该能支持你想要的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top