что я могу и не могу сделать с boost.program_options?

В настоящее время я использую какую-то старую библиотеку C для получения параметров программы и хотела бы заменить ее на какой-то правильный C ++ (главным образом, чтобы стать независимым от этой библиотеки, что является настоящим бременем). Я изучал использование boost.program_options, но не уверен, что он может поддерживать все, что я хочу. Некоторые вещи, которые я хочу, это:

  1. разрешить следующий синтаксис командной строки: myprogram option=value (в частности, я не очень хочу --option value синтаксис)

  2. используйте значение по умолчанию, если значение не указано (очевидно, это может быть сделано в моей программе, но поддержка в библиотеке опций была бы хорошей)

  3. разрешить параметры по умолчанию (которые всегда присутствуют, даже если я их не даю) и автоматический вывод справки, состоящий из всех параметров и их описания

  4. разрешить математический анализ, т.е. (командная строка) myprogram option1=Pi option2=3/5 option3=sqrt(2) дать 3.1415 …, 0.6 и 1.415 … в моей программе

  5. Позволяет расширить отдельные значения. Позволять option_3Dpoint соответствовать std::array<double,3>, Я хочу оба myprogram option_3Dpoint=0,0,0 а также myprogram option_3Dpoint=0 (расширяется до 0,0,0) работать

Какие из них могут поддерживаться boost.program_options? Есть ли альтернативы?

4

Решение

boost.program_options — очень хорошая библиотека. Вы также можете использовать для разбора конфигурационных файлов. ответы:

  1. Не знаю, но, кажется, нет встроенной поддержки.
  2. Да.
  3. Да.
  4. Нет, если вы не сделаете свой собственный обработчик оценки выражений или не используете для этого какие-то другие надстройки.
  5. Да, вам нужно написать свой собственный обработчик, который создает 3DPoint объект из строки как 0,0,0
3

Другие решения

Других решений пока нет …