boost程序选项中互斥选项的集合
Sets of mutually exclusive options in boost program options
我的程序(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++方法
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- Win32编译器选项和内存分配
- 如何将ampl中的集合表示为c++中的向量
- 检查值是否在集合p1和p2中,但不在p3中
- 带过滤器的现代迭代c++集合
- 如何将结构插入到集合中并打印集合的成员
- 集合上的输出迭代器:assign和increment迭代器
- C/C++预处理器是否可以检测一些编译器选项
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 实现一个在集合上迭代的模板函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 尝试使用集合函数时出现分段错误
- 互斥指针的集合
- c++找不到具有相同哈希的无序集合元素
- 通过选项卡的文本设置QTabWidget顺序
- 通过ccmake在cmake中缓存依赖选项
- boost程序选项中互斥选项的集合