我正在使用Boost程序选项来解析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不接受矢量。我究竟做错了什么?或者图书馆是这样设计的?
答案 0 :(得分:1)