C++的Properties讀寫庫 libproperties
提供一個簡單易用的C++類Properties用以讀寫基于xml格式的配置文件,從而實現類似java中Properties類的作用。兩者生成的xml文件可以互通。
Xml時代據說已經到來了,現在的程序流行使用xml配置文件。如果你
使用過java中的Properties類,你會發現它的方便。很多時候我們并不 需要多么龐大的類庫,我們僅僅需要從xml文件中提取“key-value”形式 的配置參數或將其寫入。我們需要易于使用的盡可能小的類庫。我們可 能想按以下代碼形式完成我們的配置文件解析工作:(見src/test/tes- tproperties.cpp)
codeProperties 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>
是不是發現這個c++類的名字和幾個方法與java中的Properties類很相似?哈哈,你是對的,使用libproperties庫生成的xml文件是完全可以與 java中Properties類互通的!libproperties庫可以無障礙的讀取java程 序產生的xml文件(使用Properties類)。
libproperties庫會不會難于學習?不會!它對外只提供一個類和幾個公共方法。(僅有類Properties)libproperties庫線程安全嗎?不安全。底層基于tinyxml2.4.3庫,這個庫線程不安全。我已經有了tinyxml庫,如果安裝了libproperties庫,會不會沖突?如果你已經安裝了tinyxml庫,包括頭文件和庫文件,則可以將include 目錄下的libproperties.h和libproperties_tinyxml_ext.h引入你的工 程頭文件搜索路徑,將src/libproperties里的libproperties.cpp和l- ibproperties_tinyxml_ext.cpp源文件引入你的工程即可。libproper- tis源文件沒有修改任何tinyxml源文件,只是衍生出幾個類。