依赖项:

依赖于 ProcessString 类,可从该篇博客获取「字符串处理类 ProcessString (包含常用字符串处理函数)」

ParseConfig.h

//Linux & C++11

#pragma once

//包含系统头文件
#include <string>
#include <exception>
#include <memory>
#include <map>

//宏定义:函数参数流向
#define IN
#define OUT
#define INOUT

//使用命名
using std::string;
using std::exception;
using std::shared_ptr;
using std::make_shared;
using std::map;

namespace sinicheveen
{
    class ParseConfig
    {
    public:
    //group 1:解析、获取配置

        //解析配置文件到 map 中
        static void parseConfFileIntoMap();

        //输出 m_mConfs 中的配置项
        static void printConfInMap();

        //从 m_mConfs 中获取某个 section 下的某项配置
        static string getSpecConfValFromMap(IN const string& strSectionName, IN const string& strConfName);

        //从 m_mConfs 中获取某项配置,如果在多个 section 下有相同的配置名,则获取第一个 seciton 下的配置值
        static string getSpecConfValFromMap(IN const string& strConfName);

        //从配置文件中获取某个 section 下的某项配置
        static string getSpecConfValFromFile(IN const string& strSectionName, IN const string& strConfName);

        //从配置文件中获取某项配置,如果在多个 section 下有相同的配置名,则获取第一个 seciton 下的配置值
        static string getSpecConfValFromFile(IN const string& strConfName);

    //guoup 2:格式校验

        //校验 section name 格式,格式必须是 [XXXX]
        static void checkSectionNameFromat(INOUT const string& strConf, IN const uint32_t lineNum);

        //校验配置项格式
        static void checkConfItemFormat(INOUT const string& strConf, IN const uint32_t lineNum);

    //group 3:静态成员初始化

        //初始化静态成员 m_mConfs
        static map<string, map<string, string>> initStaticMapConfs();

    //group 4:静态变量
    private:
        static string m_strConfFilePath;
        static map<string, map<string, string> > m_mConfs;

    };  //ParseConfig

}   //sinicheveen

ParseConfig.cpp


未完 ......

点击访问原文(进入后根据右侧标签,快速定位到本文)

C++ 配置文件解析类 ParseConfig的更多相关文章

  1. ibatis源码学习2_初始化和配置文件解析

    问题在详细介绍ibatis初始化过程之前,让我们先来思考几个问题. 1. ibatis初始化的目标是什么?上文中提到过,ibatis初始化的核心目标是构造SqlMapClientImpl对象,主要是其 ...

  2. MyBatis配置文件解析

    MyBatis配置文件解析(概要) 1.configuration:根元素 1.1 properties:定义配置外在化 1.2 settings:一些全局性的配置 1.3 typeAliases:为 ...

  3. Hadoop配置文件解析

    Hadoop源码解析 2 --- Hadoop配置文件解析 1 Hadoop Configuration简介    Hadoop没有使用java.util.Properties管理配置文件, 也没有使 ...

  4. Hibernate的配置文件解析

    配置mybatis.xml或hibernate.cfg.xml报错: <property name="connection.url">jdbc:mysql://loca ...

  5. WCF中配置文件解析

    WCF中配置文件解析[1] 2014-06-14 WCF中配置文件解析 参考 WCF中配置文件解析 返回 在WCF Service Configuration Editor的使用中,我们通过配置工具自 ...

  6. 自己用的框架写了一个PHP模版解析类

    <?php if(!defined('IS_HEARTPHP')) exit('Access Denied'); /** * template.class.php 模板解析类 * * @copy ...

  7. nginx源代码分析--配置文件解析

    ngx-conf-parsing 对 Nginx 配置文件的一些认识: 配置指令具有作用域,分为全局作用域和使用 {} 创建其他作用域. 同一作用域的不同的配置指令没有先后顺序:同一作用域能否使用同样 ...

  8. PHP模板解析类实例

    作者:mckee 这篇文章主要介绍了PHP模板解析类,涉及php针对模板文件的解析与字符串处理的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 <?php class template { ...

  9. Spring Security 入门(1-6-1)Spring Security - 配置文件解析和访问请求处理

    1.在pom.xml中添加maven坐标 <dependency> <groupId>org.springframework.security</groupId> ...

随机推荐

  1. DEFINE_CG_MOTION宏【注释版】

    线速度是通过物体上的x方向的力平衡达到的.表达形式为: 此处v为速度,F为外力,m为质量.使用显示欧拉格式表达t时刻速度为: 源代码: #include "udf.h" stati ...

  2. elasticsearch x-pack license过期

    1.注册一个新的license,每一项都要填写,每次可以使用一年,一年到期后再来注册一个新的 2.更新license (官方文档:https://www.elastic.co/guide/en/x-p ...

  3. Parse发布Bolts,一个面向iOS和Android的底层库集合

    转载自:http://www.infoq.com/cn/news/2014/02/parse-announces-bolts 数月前,Parse被Facebook收购.最近,它开源了一个面向iOS和A ...

  4. 在Git中如何撤销上一次的commit

    有的时候我们一不小心就git commit -m ‘commit message info’解决办法,很简单,只需执行git reset HEAD~这条命令即可,即能保证你原本的修改还在,也能撤销本次 ...

  5. POJ1177和POJ1389 。。。

    POJ 1177 Picture 经典线段树+离散化+扫描线 POJ 1177 Picture (线段树+离散化+扫描线) 详解 线段树(segment tree) http://www.java3z ...

  6. Linux安装Windows字体

    Linux系统使用Windows系统字体的方法 2017年12月26日 09:35:54 知行合一2018 阅读数 1989更多 分类专栏: 杂项   版权声明:本文为博主原创文章,遵循CC 4.0 ...

  7. JS-SDK相关参考

    原文: https://www.cnblogs.com/wuhuacong/p/5482848.html https://www.cnblogs.com/29boke/p/5483599.html

  8. 实战二:LoadRunner创建一个测试脚本

    问题一:执行脚本浏览器不能自动启动??? 原因:loadrunner11只支持IE9以下浏览器和火狐低版本浏览器 解决办法:1.IE浏览器取消勾选[启用第三方浏览器扩展]启动IE,从[工具]进入[In ...

  9. 深入Resource实现多语言支持的应用详解

    首先为假设有一个应用程序CAStudy,接着右键添加一个资源文件Resource1.resx. Resource1.resx里面如下: Main函数如下:static void Main(){    ...

  10. linux删除用户报错:userdel: user prize is currently used by process 28021

    之前创建了一个普通用户prize,现在想删掉它: [root@VM_0_14_centos /]# userdel prize userdel: user prize 发现原来我克隆了一个会话,另一个 ...