Я переношу скрипт python на C++ и не нашел способ выражения аргумента, такого как:
--metadata KEY VALUE
В анализирующих библиотеках C++ я видел:
Возможно, это существует как возможность в одном из них, может быть, мне нужно исследовать других, может быть, мне просто нужно сделать это вручную.
Знаете ли вы о библиотеке синтаксического анализа C++, которая поддерживает несколько аргументов для параметров?
Флаги командной строки, которые принимают более одного аргумента, обескуражены стандартными инструкциями синтаксиса оболочки. Поэтому я сомневаюсь, что вы найдете стандартную библиотеку, которая ее обрабатывает. Чаще всего принимают варианты в формате, например:
--metadata KEY=VALUE
и вы, вероятно, найдете стандартные библиотеки, которые помогут вам с этим форматом (конечно, strtok
или std::string::find
также удобны в использовании).
Если вы действительно настаиваете на выборе дизайна аргументов с несколькими вариантами, вы можете сделать это с помощью getopt_long
если вы скажете ему не переставлять аргументы (поместите a +
в качестве первого символа optstring
); все, что вам нужно сделать, - это вручную optind
при чтении аргументов. (То есть: первый аргумент будет в optarg
, следующий в argv[optind++]
и т.д.) Вероятно, в библиотеках C++ есть эквивалентные хай-хаки.