使用boost命令行解析器处理未知命令
Handling unknown commands with the boost command line parser
我想处理(注意,不要以任何方式使用)未知选项。
所以有这个:
http://www.boost.org/doc/libs/1_54_0/doc/html/program_options/howto.html#idp123440592
这可以用来收集和使用任何未知的选项,所以我可以做:
po::variables_map vm;
po::parsed_options parsed = po::command_line_parser(ac,av).options(desc).allow_unregistered().run();
{
vector<string> to_pass_further = collect_unrecognized(parsed.options, po::include_positional);
if (to_pass_further.size())
{
cout << "Unrecognized options:" << endl;
for (auto i = to_pass_further.cbegin(); i != to_pass_further.cend(); ++i)
{
cout << std::left << std::setw(2) << ' ' << *i;
return -1;
}
}
}
但是,既然我认为人们总是这样做,而图书馆应该处理我们一直在做的所有事情,我是不是错过了一些清洁工?
try
{
po::options_description desc("Allowed options");
desc.add_options()
("help,h", "produce help message")
("compression", po::value<int>()->required(), "set compression level")
;
po::variables_map vm;
po::store(po::parse_command_line(ac, av, desc), vm);
po::notify(vm);
}
catch(std::exception& e)
{
std::cerr << "Error: " << e.what() << "n";
return -1;
}
catch(...)
{
std::cerr << "Unknown error!" << "n";
return -1;
}
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 继承期间显示未知行为的子类
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 错误处理.将系统错误代码映射到泛型
- 输入中的字符串数未知(以字母表示)
- STXXL的任何STXXL替代方案都可以在编译时处理未知大小或任何技巧
- 在C++结构中处理未知类型的最佳方法是什么?
- c++在编译阶段如何处理未知大小的数组分配
- 未处理的异常,原始未知
- 使用boost命令行解析器处理未知命令
- 处理运行时类型未知的模板
- 处理未知容器中所有项目的最有效方法