Есть ли специальное место для хранения конфигураций в стандарте c ++ - PullRequest
1 голос
/ 16 мая 2011

Есть ли стандартное место для хранения конфигураций, таких как настройки базы данных в c ++? Просто использовать XML-файл?

Нужно решение для Windows, но лучше быть независимым от платформы.

Ответы [ 4 ]

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

Оформить Параметры программы повышения .Помимо того, что он является одним из лучших процессоров опций командной строки на любом языке, он также поддерживает чтение данных конфигурации из файлов с синтаксисом, подобным INI, и использование переменных среды.Он подходит именно для того, что он говорит: параметры программы.Однако, если у вас огромное разнообразие или иерархия конфигураций, вам лучше проверить Boost Property Tree, которая читает INI-файлы, но также XML или JSON, и, вероятно, лучше подойдет, если у вас действительно большая конфигурация.

0 голосов
/ 16 мая 2011

Стандартный C ++ - это только язык, он не знает ничего, кроме самого языка.

То, что вы спрашиваете, полностью зависит от библиотек или инфраструктуры, которые вы решите использовать для подключения к базам данных.,Там нет стандартной библиотеки, которая имеет эту цель.Поэтому сначала выберите базу данных, затем библиотеку для подключения к ней, а затем вы получите информацию о конфигурации в документации библиотеки.

0 голосов
/ 16 мая 2011

В стандарте нет ничего, но Boost.Program_options - хорошая библиотека для получения / сохранения конфигурации.

Очевидно, что файл конфигурации должен храниться в правильном месте: если это файл конфигурации для каждого пользователя, в Windows он будет храниться в каталоге %APPDATA% 1 (обычно в подкаталоге с именем ваше приложение), в Linux в точечном файле под домашним каталогом. Для файлов конфигурации, не относящихся к конкретным пользователям, они могут храниться в папке «Application Data» для всех пользователей в Windows 1 и в / etc в Linux 2 .

<ч />
  1. Естественно, вы не будете жестко кодировать эти пути, но вы будете использовать SHGetFolderPath с соответствующими значениями CSIDL (или SHGetKnownFolderPath , если вас не волнует предварительно -Vista совместимость), например CSIDL_APPDATA для пользовательских настроек, CSIDL_COMMON_APPDATA для общих для всех пользователей настроек.

  2. Обратите внимание, что /etc в Linux доступна для записи только суперпользователю; Я не помню, может ли профиль «все пользователи» быть доступным для записи обычным пользователям под Windows.

0 голосов
/ 16 мая 2011

Не знаю какого-либо стандарта, но у вас есть несколько библиотек для настройки программы, например libconfig . Кроме того, в Windows API есть несколько утилит для анализа файлов INI для программ, например, см. эту ссылку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...