Я использую 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);