Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost.Program_选项:何时<;布尔>;指定为命令行选项时,有效的命令行参数是什么?_C++_Boost_Boolean_Command Line Arguments_Boost Program Options - Fatal编程技术网

C++ Boost.Program_选项:何时<;布尔>;指定为命令行选项时,有效的命令行参数是什么?

C++ Boost.Program_选项:何时<;布尔>;指定为命令行选项时,有效的命令行参数是什么?,c++,boost,boolean,command-line-arguments,boost-program-options,C++,Boost,Boolean,Command Line Arguments,Boost Program Options,给出Boost.Program_选项的以下简单用法: boost::program_options::options_description options("Options"); options.add_options() ("my_bool_flag,b", boost::program_options::value<bool>(), "Sample boolean switch)") ; boost::程序选项::选项描述选项(“选项”); 选项。添加选

给出Boost.Program_选项的以下简单用法:

boost::program_options::options_description options("Options");

options.add_options()

    ("my_bool_flag,b", boost::program_options::value<bool>(), "Sample boolean switch)")

    ;
boost::程序选项::选项描述选项(“选项”);
选项。添加选项()
(“my_bool_标志,b”,boost::program_options::value(),“示例布尔开关”)
;
。。。哪些命令行参数的计算结果为
false
,哪些命令行参数的计算结果为
true

(即,假设程序名为“foo”,并在命令行上执行为:
foo-b?
…带问号的其他文本占位符:哪些可能的文本选项将正确计算为
false
,哪些将正确计算为
true
?)

查看$(BOOST\u ROOT)/libs/program\u options/src/value\u semantic.cpp您可以找到:

/* Validates bool value.
    Any of "1", "true", "yes", "on" will be converted to "1".<br>
    Any of "0", "false", "no", "off" will be converted to "0".<br>
    Case is ignored. The 'xs' vector can either be empty, in which
    case the value is 'true', or can contain explicit value.
*/
BOOST_PROGRAM_OPTIONS_DECL void validate(any& v, const vector<string>& xs,
                   bool*, int)
{
    check_first_occurrence(v);
    string s(get_single_string(xs, true));

    for (size_t i = 0; i < s.size(); ++i)
        s[i] = char(tolower(s[i]));

    if (s.empty() || s == "on" || s == "yes" || s == "1" || s == "true")
        v = any(true);
    else if (s == "off" || s == "no" || s == "0" || s == "false")
        v = any(false);
    else
        boost::throw_exception(invalid_bool_value(s));
}
/*验证布尔值。
任何“1”、“真”、“是”、“开”都将转换为“1”。
“0”、“false”、“no”、“off”中的任何一个都将转换为“0”。
这个案子被忽略了。“xs”向量可以为空,其中 案例值为“true”,或可以包含显式值。 */ BOOST_PROGRAM_OPTIONS_DECL void validate(任意&v、常量向量和x、, 布尔*,整数) { 检查第一个事件(v); 字符串s(获取单个字符串(xs,true)); 对于(大小i=0;i