如何在Linux下通过cxxopts将默认true的布尔标志设为false?
解决cxxopts布尔选项设为false的问题
你当前定义的是带值的布尔类型选项,默认值为true。要将其设为false,有几种可行的操作方式:
- 使用等号连接选项与值:
./test -m=false # 或者用长选项形式 ./test --monitor=false - 传入数字
0替代false:./test -m=0 - 利用cxxopts自动生成的反向开关(对布尔类型选项默认支持):
./test --no-m
你之前尝试的./test -m false无效,是因为cxxopts处理带值布尔选项时,用空格分隔选项和参数的情况下,会把false识别为位置参数而非选项的值,必须用等号连接或反向开关才能正确解析。
如果想更直观地用开关逻辑(加-m开启,不加则关闭),可以修改选项定义,去掉value<bool>():
options.add_options() ("m, monitor", "Monitor current state");
这种定义下默认状态为false,添加-m则变为true;若需要默认true,关闭时用--no-m即可。
内容的提问来源于stack exchange,提问作者Paul Jurczak
相关产品推荐
相关产品推荐

