Разрешает ли какая-либо из библиотек синтаксического анализа командной строки для C ++ опции с N аргументами

0

Я переношу скрипт python на C++ и не нашел способ выражения аргумента, такого как:

--metadata KEY VALUE

В анализирующих библиотеках C++ я видел:

  • повышение :: program_options
  • TCLAP
  • Gflags

Возможно, это существует как возможность в одном из них, может быть, мне нужно исследовать других, может быть, мне просто нужно сделать это вручную.

Знаете ли вы о библиотеке синтаксического анализа C++, которая поддерживает несколько аргументов для параметров?

Теги:
command-line-arguments

1 ответ

1
Лучший ответ

Флаги командной строки, которые принимают более одного аргумента, обескуражены стандартными инструкциями синтаксиса оболочки. Поэтому я сомневаюсь, что вы найдете стандартную библиотеку, которая ее обрабатывает. Чаще всего принимают варианты в формате, например:

--metadata KEY=VALUE

и вы, вероятно, найдете стандартные библиотеки, которые помогут вам с этим форматом (конечно, strtok или std::string::find также удобны в использовании).

Если вы действительно настаиваете на выборе дизайна аргументов с несколькими вариантами, вы можете сделать это с помощью getopt_long если вы скажете ему не переставлять аргументы (поместите a + в качестве первого символа optstring); все, что вам нужно сделать, - это вручную optind при чтении аргументов. (То есть: первый аргумент будет в optarg, следующий в argv[optind++] и т.д.) Вероятно, в библиотеках C++ есть эквивалентные хай-хаки.

  • 0
    На самом деле, это имеет больше смысла, а также означает, что любая из библиотек будет работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню