我的程序(prog.exe
)支持以下四个标志:-P
、-p
、-b
和 -s
。然而:
-b
和-p
必须一起指定,构成一个集合,并且具有数值,例如-b 42
-s
不能用上面的设置指定,反之亦然-P
在这两种情况下都是必需的
因此 prog.exe
只能作为两者之一运行
prog.exe -P -s
或
prog.exe -P -b -42 -p 8
有没有办法在boost程序选项中指定上述一组互斥的命令行选项?
最佳答案
你应该从几个教程开始 [1] [2]了解 boost::program_options
的工作原理。
然后,您可以定义两个互斥选项,只需定义一个小函数,如 real.cpp 中所述。 .例如,您可以指定定义 conflicting_options()
函数的两个冲突(或依赖)选项:
void conflicting_options(const boost::program_options::variables_map & vm,
const std::string & opt1, const std::string & opt2)
{
if (vm.count(opt1) && !vm[opt1].defaulted() &&
vm.count(opt2) && !vm[opt2].defaulted())
{
throw std::logic_error(std::string("Conflicting options '") +
opt1 + "' and '" + opt2 + "'.");
}
}
然后调用
conflicting_options (vm, "quiet", "verbose");
在boost::program_options::store()之后
我仍然不明白是否可以定义两个相互排斥的位置选项,但这应该是另一个问题。
关于c++ - 升压程序选项中的互斥选项集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577107/