【问题标题】:how to automatically store the value of a simple flag into a variable?如何自动将简单标志的值存储到变量中?
【发布时间】:2013-07-25 09:22:30
【问题描述】:

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

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

【问题讨论】:

    标签: boost-program-options


    【解决方案1】:

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

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

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

    boost::program_options::bool_switch()
    

    它可以有truefalse 值,并且不能从命令行显式地为这个选项取值。如果传递了该选项,则值为true。如果未通过 - 值为 false

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-19
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多