Подтвердить что ты не робот

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);
4b9b3361

Ответ 1

Короткие опционы по определению имеют только один символ. Если бы у них было больше, они были бы длинными вариантами.

Чтобы позволить длинные параметры начинаться с одной тире, включите стиль командной строки allow_long_disguise, как описано на странице документации, с которой вы связаны с:

Можно ввести длинные опции тем же символом, что и короткие варианты, см. allow_long_disguise.