我正在尝试将boost :: program_options与一个空的long参数(双连字符)和一个short参数一起使用。
在这种情况下,即使传递了count(",h")
参数,-h
始终返回0。
这是一个简短的示例(示例输入./bin -h
)
#include <iostream>
#include <boost/program_options.hpp>
namespace po = boost::program_options;
int main(int argc, char* argv[])
{
po::options_description test("test");
test.add_options()
(",h", "help");
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, test), vm);
po::notify(vm);
if(vm.count(",h"))
{
std::cout<<"Success\n"; // never reaches here
}
return 0;
}
在使用空长参数时调用vm.count()
函数的正确方法是什么?
通常,短自变量被认为是长自变量的缩写。在上面的示例中,更好的选择是("help,h", "help")
,然后vm.count("help")
将同时计算--help
和-h
。但是省略长参数here和here.引起了一定的兴趣,因此我想使其工作而不用为每个短参数分配一个长参数。