c ++: настройки программы - boost.PropertyTree или boost.program_options? - PullRequest
12 голосов
/ 10 мая 2011

Я искал решение для хранения настроек или опций программы или конфигурации в C ++.Это могут быть настройки, которые отображаются в графическом интерфейсе и которые необходимо сохранять между прогонами моего кода.

В моем поиске я наткнулся на boost.PropertyTree , который казался хорошим выбором.Я знаю, что boost - это уважаемый код, поэтому мне удобно его использовать, и я начал разрабатывать его.Затем я сталкиваюсь с boost.program_options , который, кажется, позволяет вам делать то же самое, но также выглядит более специализированным для конкретного случая использования настроек программы.

Теперь мне интересно, какиесамый подходящий для работы?(или есть третий вариант, который лучше, чем оба)

РЕДАКТИРОВАТЬ: Кстати, это для плагина, поэтому он не будет использовать параметры командной строки (как в, это даже невозможно).

ОБНОВЛЕНИЕ

Я остановился на boost.PropertyTree.Мне нужно было иметь возможность сохранить измененные параметры обратно в INI, и я не видел способа сделать это с boost.program_options.

Ответы [ 3 ]

10 голосов
/ 10 мая 2011

Используйте boost::program_options. Это именно то, для чего это. В одной библиотеке вы получаете параметры командной строки, параметры переменных среды и анализатор INI-подобного файла конфигурации. И все они объединены вместе Правильным образом, поэтому, когда пользователь указывает одну и ту же опцию в более чем одном из этих источников, библиотека знает, какой порядок приоритетов следует учитывать.

boost::property_tree, с другой стороны, является более обобщенной библиотекой. Библиотека анализирует поток текста в единую модель данных. Но Вы должны выполнить реальный анализ - то есть, чтобы разобраться с большим количеством данных для ваших нужд. Библиотека не знает, когда ожидать параметр, когда видит конкретную строку параметра, или запрещать определенные значения или типы значений для определенного параметра.

6 голосов
/ 12 мая 2011

После нескольких копаний я думаю, что boost.PropertyTree по-прежнему является лучшим решением, поскольку оно дает мне возможность сохранять параметры после их изменения в программе, что является обязательным требованием.

1 голос
/ 11 мая 2011

Существует также возможность без повышения. Config4Cpp - это надежная, простая в использовании и полностью документированная библиотека анализатора конфигурационных файлов, которую я написал. Он доступен на www.config4star.org .

Я предлагаю вам прочитать Глава 3 ( Предпочтения для приложения с графическим интерфейсом * ) руководства Руководство по практическому использованию , чтобы прочитать обзор того, как Config4Cpp может делать то, что ты хочешь. Затем откройте руководство Getting Started Guide и прочитайте разделы 2 и 3 , а также раздел 7.4 (вы можете прочитать PDF-версия этого руководства ). Это даст вам достаточно информации, чтобы помочь вам решить, подходит ли Config4Cpp к вашим потребностям лучше или хуже, чем Boost.

Кстати, указанные главы и разделы документации короткие, поэтому их чтение не займет много времени.

...