Boost Program Options Синтаксис
Я использую boost:: program_options, чтобы прочитать вход пользователя из аргумента командной строки. Он работает очень хорошо и позволяет мне выводить полезные сообщения об использовании и правильно проверять ввод. Однако по умолчанию длинные имена опций должны появляться после двухкратной тишины, например --my_long_option
, а короткие параметры появляются после одной тире и должны быть одним символом, например; -m
.
Есть ли способ...
- Разрешить длинные параметры после одного
-
?
- Разрешить короткие опции иметь более одного символа?
Таким образом, у меня есть командные строки, которые выглядят как
./a.out -myopt1 foo -myopt2 bar
Две возможности должны иметь тот же эффект, хотя с точки зрения программирования первая будет лучше. Я посмотрел на boost:: program_options:: command_line_style, но не похоже, что он может делать то, что мне нужно.
Спасибо
Изменить: В дополнение к принятому ниже ответу, чтобы заставить его использовать этот стиль, нужно добавить следующий код (следуя соглашению об именах для ускоренных документов)
po::store(
po::command_line_parser(ac,av)
.options(desc)
.style(
po::command_line_style::unix_style
| po::command_line_style::allow_long_disguise)
.run(),
vm);
Ответы
Ответ 1
Короткие опционы по определению имеют только один символ. Если бы у них было больше, они были бы длинными вариантами.
Чтобы позволить длинные параметры начинаться с одной тире, включите стиль командной строки allow_long_disguise
, как описано на странице документации, с которой вы связаны с:
Можно ввести длинные опции тем же символом, что и короткие варианты, см. allow_long_disguise.