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()
它可以有
true
或 false
值,并且不能从命令行显式获取此选项的值。如果该选项被传递,则值为 true
.如果未通过 - 值为 false
.
关于boost-program-options - 如何自动将简单标志的值存储到变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853952/