Может повысить:: Использование program_options Разделитель Кроме “-”?

Я использую повышение:: program_options как это:

namespace po = boost::program_options;
po::options_description desc("Options");
desc.add_options()
  ("help,?", "Show Options")
  ("capture-file,I", po::value<string>(), "Capture File")   
  ("capture-format,F", po::value<string>()->default_value("pcap"), "Capture File Format")
  ("output-file,O", po::value<string>()->default_value("CONOUT$"), "Output File");

po::variables_map vm;
po::store(po::command_line_parser(ac, av).options(desc)./*positional(pd).*/run(), vm);

Если я передаю параметр командной строки -I hithere это работает, но это я передаю /I hithere повысьте бросает a boost::bad_any_cast с a what() из "неудавшегося преобразования с помощью повышения:: any_cast".

Действительно ли возможно использовать program_options для парсинга также /- разграниченный или -- разграниченные опции? Вопрос о премии, может это быть настроенным так, чтобы / и - установите ту же опцию, но двоичные противоположности друг друга? Например, /verbose мог бы означать подробный вход в то время как -verbose мог бы означать меньше подробного входа.

7
задан John Dibling 26 May 2010 в 20:23
поделиться

1 ответ

Чтобы использовать / и - , используйте command_line_parser метод style () с соответствующей комбинацией style_t флаги. Например:

po::store(po::command_line_parser(ac, av)
    .options(desc)
    .style(po::command_line_style::default_style
        | po::command_line_style::case_insensitive
        | po::command_line_style::allow_slash_for_short
        | po::command_line_style::allow_long_disguise)
    /*.positional(pd)*/
    .run(), vm);

( allow_long_disguise позволяет / запускать длинный вариант.)

Вероятно, вы могли бы сделать / и - противоположны путем добавления собственного дополнительного парсера ; однако это было бы очень нестандартно и, следовательно, могло бы сбить с толку конечных пользователей, поэтому я не уверен, что это хорошая идея.

10
ответ дан 7 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: