Подтвердить что ты не робот

С++: настройки программы - boost.PropertyTree или boost.program_options?

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

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

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

EDIT: fyi это для плагина, поэтому он не будет использовать параметры командной строки (как в, это даже не возможно).

UPDATE

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Я предлагаю вам прочитать главу 3 (Предпочтения для приложения GUI) руководства по практическому использованию, чтобы прочитать обзор того, как может работать Config4Cpp что ты хочешь. Затем откройте руководство по началу работы и прочитайте главы 2 и 3 и раздел 7.4 (вы можете предпочесть читать PDF версия этого руководства). Выполнение этого должно дать вам достаточно подробностей, чтобы помочь вам решить, подходит ли Config4Cpp для ваших нужд лучше или хуже Boost.

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