6

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),这不是我想要的。

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

4

1 回答 1

10

要拥有一个没有值的选项(通过意味着它已设置true),您应该像这样创建它:

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

要将通知程序用于此类选项,您可以使用以下类型作为语义:

boost::program_options::bool_switch()

它可以有trueorfalse值,并且不能从命令行显式地为此选项获取任何值。如果传递了选项,则值为true。如果未通过 - 值为false.

于 2013-07-26T09:36:23.330 回答