boost-program-options - 如何自动将简单标志的值存储到变量中?

标签 boost-program-options

boost 选项解析器允许分配一个变量来存储选项值,而不是使用 so_long["typing"].as<bool>()道路:

bool flag_value;
entries.add_options()
("flag", value<bool>(&flag_value), "a simple flag value");
......
cout<<"flag value is: "<<flag_value<<endl;

然而,上面的选项声明并没有创建一个简单的标志选项。它实际上需要你输入一些东西作为值(--flag true|false|on|off|yes|no|1|0),这不是我想要的。

那么,有没有办法将结果存储在一个 bool 值中,并且仍然将选项保留为一个简单的标志?

最佳答案

要有一个没有值的选项(传递意味着它被设置 true )你应该像 this 一样创建它:

options_description desc;
desc.add_options()
    ("help", "produce help message")

要将通知程序用于此类选项,您可以使用 following type作为语义:
boost::program_options::bool_switch()

它可以有 truefalse值,并且不能从命令行显式获取此选项的值。如果该选项被传递,则值为 true .如果未通过 - 值为 false .

关于boost-program-options - 如何自动将简单标志的值存储到变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853952/

相关文章:

c++ - 从 boost::program_options 值中输入 un-erasure

c++ - boost program_options : help vs. 有意义的选项

c++ - boost 程序选项: Read required parameter from config file

c++ - boost::program_options 和 ini 文件中的多个部分

c++ - 是否有一些类似于 boost program_options 但用于 *keyboard shortcut auto-gen help* 的 c++ 库/源代码?

c++ - 使用 Boost 库程序选项的必需和可选参数

c++ - 使用 boost::program_options 禁止无符号值的负参数

c++ - 如何将 boost options_description 与十六进制输入一起使用?

c++ - boost 程序选项不适用于 GLIBCXX_DEBUG

c++ - 需要一个命令行解析器来满足我的要求