C++ 中使用boost::property_tree读取解析ini文件
睿丰德科技 专注RFID识别技术和条码识别技术与管理软件的集成项目。质量追溯系统、MES系统、金蝶与条码系统对接、用友与条码系统对接
boost 官网 http://www.boost.org/
下载页面 http://sourceforge.net/projects/boost/files/boost/1.53.0/
我下载的是 boost_1_53_0.tar.gz
使用系统 ubuntu 12.10
一、解压
[plain] view plaincopy- tar -zxvf boost_1_53_0.tar.gz
得到一个文件夹 boost_1_53_0, 拷贝其子目录 boost 到以下路径
[plain] view plaincopy- /usr/local/include/
二、编写读取解析ini的类文件
ini.h
[cpp] view plaincopy- /*
- * File: ini.h
- * Author: tsxw24@gmail.com
- *
- * Created on 2013年3月18日, 下午2:51
- */
- #ifndef INI_H
- #define INI_H
- #include <boost/property_tree/ptree.hpp>
- #include <boost/property_tree/ini_parser.hpp>
- #include <string>
- using namespace std;
- class Ini{
- public:
- Ini(string ini_file);
- string get(string path);
- short int errCode();
- private:
- short int err_code;
- boost::property_tree::ptree m_pt;
- };
- #endif /* INI_H */
ini.cpp
[cpp] view plaincopy- #include "ini.h"
- Ini::Ini(string ini_file){
- if (access(ini_file.c_str(), 0) == 0) {
- this->err_code = 0;
- boost::property_tree::ini_parser::read_ini(ini_file, this->m_pt);
- } else {
- this->err_code = 1;
- }
- }
- short Ini::errCode(){
- return this->err_code;
- }
- string Ini::get(string path){
- if (this->err_code == 0) {
- return this->m_pt.get<string>(path);
- } else {
- return "";
- }
- }
三、测试
main.cpp
[cpp] view plaincopy- #include <cstdlib>
- #include <stdio.h>
- #include <iostream>
- #include <string>
- #include "ini.h"
- using namespace std;
- /*
- *
- */
- int main(int argc, char** argv) {
- string ini_file = "/home/share/code/CppClass/test1.ini";
- Ini ini(ini_file);
- cout<<ini.get("public.abc")<<endl;
- return 0;
- }