C++程序配置类库
2012年03月07日 10时28分
一、INI文件读取库
除了使用Windows提供的API函数(见之前文章介绍)和Boost、QT、wxWidgets等类库提供的配置函数外,还可以使用下面的类库:
1.SimpleIni(code.jellycan.com/simpleini/)
一个跨平台的类库,提供简单的API读写INI文件,支持ASCII, MBCS and Unicode文件格式。开源,使用MIT协议。 使用方法:
CSimpleIniA ini;
ini.SetUnicode();
ini.LoadFile("myfile.ini");
const char * pVal = ini.GetValue("section", "key", "default");
ini.SetValue("section", "key", "newvalue");
2.RudeConfig(rudeserver.com/config/index.html)
// Create config object
//
Config config;
// load a configuration/.ini file
//
config.load("myfile.ini");
// read information
//
config.setSection("General Info");
double cost = config.getDoubleValue("Cost");
const char *company = config.getStringValue("Company Name");
// create information
//
config.setSection("new section");
config.setStringValue("animal type", "giraffe");
config.setBoolValue("mammal", true);
// save changes
//
config.save();
3.minIni(code.google.com/p/minini/)
minIni是一个在嵌入式系统中使用的读取INI文件库。minIni占用极少资源,可以为各种文件IO库配置。
二、XML文件读取库
1.TinyXML-2(grinninglizard.com/tinyxml2docs)
如名字所示,是简单的XML文件读取库,并且是第二版。仅包含一个.h文件和一个.cpp文件,直接和自己的源代码一起编译即可使用。
三、序列化文件(类似JSON格式)读取库
1.libconfig(hyperrealm.com/libconfig/)
Libconfig是一个简单的用来处理结构化配置文件的库,像这样的文件:test.cfg。这种文件格式比XML更紧凑易读。不像XML,它是可识别类型的,所以在程序代码中不必做字符串解析。
int var1;
double var2;
const char *var3;
if(config.lookupValue("values.var1", var1)
&& config.lookupValue("values.var2", var2)
&& config.lookupValue("values.var3", var3))
{
// use var1, var2, var3
}
else
{
// error handling here
}