是否可以使用
boost::program_options
仅使用短选项指定参数?
here给出的答案是使用allow_long_disguise
,这将导致长选项可以用一个破折号来接受。有没有办法使某些选项仅简短(单破折号和单个字符),而不使用 allow_long_disguise
?
不,图书馆不支持此功能。
你可以编写自己的解析器
namespace po = boost::program_options;
std::pair<std::string, std::string> short_flag_parser(const std::string& s)
{
// one letter arguments work with single dash
if (s[0] == '-' && s.size() == 2) {
return make_pair(s.substr(1), std::string());
} else {
return make_pair(std::string(), std::string());
}
};
int main() {
desc.add_options()
("help, h", "produce help message");
po::variables_map vm;
po::store(po::command_line_parser(ac, av).options(desc).extra_parser(short_flag_parser).run(), vm);
po::notify(vm);
if (vm.count("help")) {
std::cout << desc;
return;
}
}