С/C++: libconfig - библиотека для обработки конфигурационных файлов
-
Потребовалось включить в программу удобочитаемый и легко редактируемый конфигурационный файл. После перебора нескольких библиотек решил остановиться на libconfig. Вроде отличная библиотека, к тому же её легче всего удалось адптировать. Для установки нужно (мне нужен был биндинг для C++)
sudo aptitude install libconfig++-dev libconfig8-dev
Затем подключаем в проект вот так:
#include < libconfig.h++ >
libconfig::Config conf;
А использовать ещё проще
// загружаю конфиг, в случае ошибки ловим исключение с описание ошибки
try{
conf.readFile("config.conf");
}
catch(libconfig::ParseException e){
std::cout << e.getError() << " line:" << e.getLine() << std::endl;
}
// получаю значения различных типов
bool fullscreen = conf.lookup("application.screen.fullscreen");
string fontname = conf.lookup("application.fontname");
...
// используя скрытое преобразование типов передаю параметры в функцию
SDL_SetVideoMode(conf.lookup("application.screen.size.w") ,conf.lookup("application.screen.size.h") ,bpp,flags);
...
// меняю значений переменных и сохраняю
conf.lookup("application.screen.fullscreen")= (fullscreen?false:true);
conf.writeFile("config.conf");
В конфигах можно использовать довольно сложные стурктуры:
application :
{
version = "0.51";
name = "app";
screen :
{
size :
{
w = 1280;
h = 1024;
};
fullscreen = false;
shadows = "1";
detaillevel = "1";
};
keys :
{
up_key = 273;
down_key = 274;
left_key = 276;
right_key = 275;
fire_key = 32;
pause_key = 27;
};
fontname = "fonts/verdana.ttf";
level = "3";
map = "original.map";
sound = true;
};
Вроде очень простой и удобный класс, только необходимо помнить о приведении типа, например если вы ждёте в программе bool, а в конфиге используется "true" или "false", то выскочит ексепшен
текст недоступен
другие страницы раздела
- C/C++: Разбор параметров командной строки - unistd.h :: getopt
- Python: strip split join
- jQuery: простые примеры
- python: работа со строками и словарями, формирование sql запросов
- Выбор платформы для презентаций
- Пакетная обработка DBF Foxpro файлов, Import в FoxPRO
- Расширение Firefox собственным Меню -- это очень просто
- Разработка открытой альтернативы закрытому отраслевому ПО "Архивный Фонд"
- Django использование select_related для оптимизации работы
- Linux Django pyodbc MSSQL
- Sqlite3 работа с несколькими базами
- python ProxyError
- Python: сортировка списков
- Flask.admin FileAdmin проблема с локалями
- Flask restful сериализация sqlalchemy моделей в Json поток
комментарии (3)
2009-12-15 00:16:57
2009-12-15 00:17:42
2011-03-19 08:56:50