"条件"解析命令行参数

nil*_*ils 9 c++ terminal command-line command-line-arguments

说我有一个可执行文件(在mac,win和linux上运行)

 a.out [-a] [-b] [-r -i <file> -o <file> -t <double> -n <int> ]
Run Code Online (Sandbox Code Playgroud)

其中一个参数[ ]意味着它是可选的.但是,如果最后一个参数-r设置,那么-i,-o,-t,和-n必须提供的,太.

有很多优秀的C++ - 用于解析命令行参数的库,例如gflags(http://code.google.com/p/gflags/),tclap(http://tclap.sourceforge.net/), simpleopt(http://code.jellycan.com/simpleopt/),boost.program_options(http://www.boost.org/doc/libs/1_52_0/doc/html/program_options.html)等.但我想知道如果有一个允许我直接编码参数之间的这些条件关系,无需手动编码错误处理

if ( argR.isSet() && ( ! argI.isSet() || ! argO.isSet() || ... ) ) ...
Run Code Online (Sandbox Code Playgroud)

并手动设置--help.

tclap允许XOR参数,例如,-a或者-b是允许的,但不是两者.所以,在那个术语中,参数的AND会很好.

有没有人知道一个多功能,轻量级,跨平台的库可以做到这一点?

Som*_*ude 2

你可以对论点进行两次传递;如果-r在选项中,您将重置解析器并从添加的新强制选项开始。


您还可以研究 TCLAP 的XorHandler工作原理,并创建您自己的AndHandler.