C++ 中使用boost::property_tree读取解析ini文件


boost 官网 http://www.boost.org/

下载页面 http://sourceforge.net/projects/boost/files/boost/1.53.0/

我下载的是 boost_1_53_0.tar.gz

使用系统  ubuntu 12.10


一、解压

tar -zxvf  boost_1_53_0.tar.gz
得到一个文件夹 boost_1_53_0,  拷贝其子目录 boost 到以下路径
/usr/local/include/

二、编写读取解析ini的类文件

ini.h

/*
 * File:   ini.h
 * Author: [email protected]
 *
 * 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

#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

#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;
}

你可能感兴趣的:(C++)