c++ - boost::program_options 如何重新加载一个值

标签 c++ boost boost-program-options

我想从配置文件中重新加载一些值。我知道 po::store 不会更改存在于 variables_map 中的值。有没有替代方案可以替换值,即使它们已经存在?

我尝试删除即将从 variables_map 重新加载的值,但是 po::store 无论如何都不会添加新值(即使旧值不能都可以访问)。

最佳答案

P3trus 的解决方案涉及向下转换。这是必要的,因为 variables_map 重载了 std::map::operator[] 返回一个 const variable_value & (const 防止重新分配)。

但是在 C++11 中我们有 std::map::at() 没有重载,所以可以这样做:

vm.at(option).value() = val;

直接在需要的地方。

关于c++ - boost::program_options 如何重新加载一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8371435/

相关文章:

c++ - 带有 boost boost::program_options 和 options_description 的 RAII

c++ - 使用 boost program_options 处理帮助消息,删除默认值或重新格式化帮助消息

c++ - 使用 boost vector 和字符串的奇怪 boost program_options 问题

c++ - 从具有默认值的部分指定模板类继承时出现 SWIG 错误,前向声明没有默认值

java - 让 SWIG 理解 char** 以便在 Java 中使用它

c++ - T的类型是什么?

c++ - 在哪里定义 _SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING 或 _SILENCE_ALL_CXX17 DEPRECATION_WARNINGS 宏?

C++ 对文件夹中的所有文件执行相同的代码

c++ - DI Boost C++14 和动态容器

c++ - [[不太可能]]可以用循环吗?