【发布时间】:2013-04-26 13:58:13
【问题描述】:
我正在使用 Boost Program Options 来解析 CLI。
我面临的问题是,如果 CLI 中有任何标记前面没有“-”或“--”,库会默默地忽略它而不是抛出异常。
以下是示例程序:
try
{
options_description od;
od.add_options()
("dummy,d", value<int>()->required(), "does nothing...");
variables_map vm;
wparsed_options po = parse_command_line(argc, argv, od);
store(po, vm);
notify(vm);
cout << vm["dummy"].as<int>() << endl;
}
catch (const error& e)
{
cout << e.what() << endl;
}
以下是一些示例运行:
Debug>test
the option '--dummy' is required but missing
Debug>test -d
the required argument for option '--dummy' is missing
Debug>test -d 1
1
Debug>test -d 1 asas
1
现在,前三个运行符合预期。但是,为什么第三次运行没有抛出任何异常? 'asas' 不匹配任何选项并且 -d 不接受向量。我究竟做错了什么?还是图书馆是这样设计的?
【问题讨论】: