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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: boost 官网 http://www.boost.org/ 下载页面 http://sourceforge.net/projects/boost/files/boost/1.53.0/ 我下载的是 boost_1_53_0.

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 plain copy
 
  1. tar -zxvf  boost_1_53_0.tar.gz  

得到一个文件夹 boost_1_53_0,  拷贝其子目录 boost 到以下路径

[plain]  view plain copy
 
  1. /usr/local/include/  

 

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

ini.h

[cpp]  view plain copy
 
  1. /* 
  2.  * File:   ini.h 
  3.  * Author: tsxw24@gmail.com 
  4.  * 
  5.  * Created on 2013年3月18日, 下午2:51 
  6.  */  
  7.   
  8. #ifndef INI_H  
  9. #define INI_H  
  10.   
  11.   
  12. #include <boost/property_tree/ptree.hpp>  
  13. #include <boost/property_tree/ini_parser.hpp>  
  14. #include <string>  
  15. using namespace std;  
  16.   
  17.   
  18. class Ini{  
  19. public:  
  20.     Ini(string ini_file);  
  21.     string get(string path);  
  22.     short int errCode();  
  23. private:  
  24.     short int err_code;  
  25.     boost::property_tree::ptree m_pt;  
  26. };  
  27.   
  28. #endif  /* INI_H */  

 

 

ini.cpp

[cpp]  view plain copy
 
  1. #include "ini.h"  
  2.   
  3.   
  4. Ini::Ini(string ini_file){  
  5.     if (access(ini_file.c_str(), 0) == 0) {  
  6.         this->err_code = 0;  
  7.         boost::property_tree::ini_parser::read_ini(ini_file, this->m_pt);  
  8.     } else {  
  9.         this->err_code = 1;  
  10.     }  
  11. }  
  12.   
  13. short Ini::errCode(){  
  14.     return this->err_code;  
  15. }  
  16.   
  17. string Ini::get(string path){  
  18.     if (this->err_code == 0) {  
  19.         return this->m_pt.get<string>(path);  
  20.     } else {  
  21.         return "";  
  22.     }  
  23. }  

 

 

 

三、测试

main.cpp

[cpp]  view plain copy
 
    1. #include <cstdlib>  
    2. #include <stdio.h>  
    3. #include <iostream>  
    4. #include <string>  
    5. #include "ini.h"  
    6.   
    7. using namespace std;  
    8.   
    9.   
    10.   
    11. /* 
    12.  * 
    13.  */  
    14. int main(int argc, char** argv) {  
    15.     string ini_file = "/home/share/code/CppClass/test1.ini";  
    16.     Ini ini(ini_file);  
    17.   
    18.     cout<<ini.get("public.abc")<<endl;  
    19.   
    20.   
    21.     return 0;  
    22. }  
目录
相关文章
|
3月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
131 2
|
2月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
220 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
1月前
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
93 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
2月前
|
存储 算法 安全
基于红黑树的局域网上网行为控制C++ 算法解析
在当今网络环境中,局域网上网行为控制对企业和学校至关重要。本文探讨了一种基于红黑树数据结构的高效算法,用于管理用户的上网行为,如IP地址、上网时长、访问网站类别和流量使用情况。通过红黑树的自平衡特性,确保了高效的查找、插入和删除操作。文中提供了C++代码示例,展示了如何实现该算法,并强调其在网络管理中的应用价值。
|
1月前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
|
2月前
|
安全 编译器 C++
C++ `noexcept` 关键字的深入解析
`noexcept` 关键字在 C++ 中用于指示函数不会抛出异常,有助于编译器优化和提高程序的可靠性。它可以减少代码大小、提高执行效率,并增强程序的稳定性和可预测性。`noexcept` 还可以影响函数重载和模板特化的决策。使用时需谨慎,确保函数确实不会抛出异常,否则可能导致程序崩溃。通过合理使用 `noexcept`,开发者可以编写出更高效、更可靠的 C++ 代码。
60 1
|
2月前
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
112 1
|
3月前
|
设计模式 安全 数据库连接
【C++11】包装器:深入解析与实现技巧
本文深入探讨了C++中包装器的定义、实现方式及其应用。包装器通过封装底层细节,提供更简洁、易用的接口,常用于资源管理、接口封装和类型安全。文章详细介绍了使用RAII、智能指针、模板等技术实现包装器的方法,并通过多个案例分析展示了其在实际开发中的应用。最后,讨论了性能优化策略,帮助开发者编写高效、可靠的C++代码。
67 2
|
3月前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
72 3
|
2天前
|
编译器 C语言 C++
类和对象的简述(c++篇)
类和对象的简述(c++篇)

推荐镜像

更多