Это вопрос синтаксического анализатора командной строки C / C ++.
Я использовал парсеры командной строки, представленные в бойкий а также Увеличение, но я нашел их не удовлетворяющими. У меня есть два особых требования:
несколько значений после одного ключа, так что я могу использовать файл glob в командной строке следующим образом:
my_program --input dir/*.txt
настраиваемый тип значения, например:
typedef enum { FORMAT_A, FORMAT_B, FORMAT_C } InputFormat;
InputFormat option_format;
Я хочу, чтобы мой пользователь мог указать формат в командной строке --format format_a
, Синтаксическому анализатору необходимо разрешить настраиваемой функции обратного вызова распознавать строковое значение и устанавливать значение перечисления.
Похоже на то увеличение опоры 1 но нет 2. Он позволяет вам определять только дополнительный парсер, который пересекает токены один за другим, но не по парам KV. А также бойкий опоры 2 но нет 1. Это позволяет только несколько вызовов, как --input foo --input bar
,
Больше либсов, которые поддерживают оба 1 а также 2? Или какие-либо предложения по расширенному использованию бойкий или же увеличение для достижения обоих 1 а также 2?
Повышение может фактически удовлетворить требование 2. Вам нужно будет создать своего собственного ребенка value_semantic
с соответствующим синтаксическим анализатором и передать экземпляр этого в add_options
вместо того, чтобы использовать типичный value<int>()
механизм.
Других решений пока нет …