C++的Properties读写库 libproperties
fmms
13年前
<blockquote> 提供一个简单易用的C++类Properties用以读写基于xml格式的配置文件, </blockquote> 从而实现类似java中Properties类的作用。两者生成的xml文件可以互通。 <blockquote> Xml时代据说已经到来了,现在的程序流行使用xml配置文件。如果你 </blockquote> <p>使用过java中的Properties类,你会发现它的方便。很多时候我们并不 需要多么庞大的类库,我们仅仅需要从xml文件中提取“key-value”形式 的配置参数或将其写入。我们需要易于使用的尽可能小的类库。我们可 能想按以下代码形式完成我们的配置文件解析工作:(见src/test/tes- tproperties.cpp) </p> <a name="code"></a>code <pre class="brush:cpp; toolbar: true; auto-links: false;">Properties p; p.setProperty("sid","harite"); p.setProperty("port","1521"); p.setProperty("userpassword","12y3_aer65"); p.setProperty("host","127.0.0.1"); p.setProperty("username","system"); p.storeToXML("connectsetting.xml"); p.clear(); if(!p.loadFromXML("connectsetting.xml")) { cout << "falue" << endl; } else { for(Properties::const_iterator it = p.begin() ; it!=p.end() ; ++it) { cout << (*it).first << "-->" << (*it).second << endl; } cout << "use getProperty" << endl; cout << p.getProperty("sid", "") << endl; cout << p.getProperty("username", "") << endl; cout << p.getProperty("port", "") << endl; cout << p.getProperty("notexist", "defaultvalue") << endl; p.clear(); }</pre> <blockquote> 是不是发现这个c++类的名字和几个方法与java中的Properties类很相 </blockquote> <p>似?哈哈,你是对的,使用libproperties库生成的xml文件是完全可以与 java中Properties类互通的!libproperties库可以无障碍的读取java程 序产生的xml文件(使用Properties类)。 </p> <blockquote> libproperties库会不会难于学习?不会!它对外只提供一个类和几个 </blockquote> 公共方法。(仅有类Properties) <blockquote> libproperties库线程安全吗?不安全。底层基于tinyxml2.4.3库,这 </blockquote> 个库线程不安全。 <blockquote> 我已经有了tinyxml库,如果安装了libproperties库,会不会冲突? </blockquote> 如果你已经安装了tinyxml库,包括头文件和库文件,则可以将include 目录下的libproperties.h和libproperties_tinyxml_ext.h引入你的工 程头文件搜索路径,将src/libproperties里的libproperties.cpp和l- ibproperties_tinyxml_ext.cpp源文件引入你的工程即可。libproper- tis源文件没有修改任何tinyxml源文件,只是衍生出几个类。 <br /> <br /> <p><strong>项目主页:</strong><a href="http://www.open-open.com/lib/view/home/1326938318046" target="_blank">http://www.open-open.com/lib/view/home/1326938318046</a></p>