依赖项:

依赖于 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. iframe中用到的例子

    <view:qrytr>         <view:qrytd colspan="4">     <iframe id="ccbl&quo ...

  2. JVM命令行参数

    root@ubuntu-blade2:/sdf/jdk# javaUsage: java [-options] class [args...] (to execute a class) or java ...

  3. thymeleaf错误解决办法

    Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "username&q ...

  4. 2018-2019-2 网络对抗技术 20165212 Exp6 信息搜集与漏洞扫描

    2018-2019-2 网络对抗技术 20165212 Exp6 信息搜集与漏洞扫描 原理与实践说明 1.实践原理 信息搜集:渗透测试中首先要做的重要事项之一,搜集关于目标机器的一切信息 间接收集 D ...

  5. transition 滑动动画

    html: <!-- 组件会在 `currentTabComponent` 改变时改变 --> <transition name="slide" mode=&qu ...

  6. MXNet/Gluon 中网络和参数的存取方式

    https://blog.csdn.net/caroline_wendy/article/details/80494120 Gluon是MXNet的高层封装,网络设计简单易用,与Keras类似.随着深 ...

  7. #软件更新#Visual Studio更新到16.3.8

    #软件更新#Visual Studio更新到16.3.8 此次更新包括以下内容:(1)支持Xcode 11.2.(2)修复无法从System.String类型转化的bug.(3)修复UWP开发中,加载 ...

  8. PHP curl put方式上传文件

    发送端: <?php function curlPut($destUrl, $sourceFileDir, $headerArr = array(), $timeout = ) { $ch = ...

  9. pythonUDP发送结构体,对齐到C++结构体

    给出程序先: import random import socket import struct import threading import pickle import json from str ...

  10. Linux记录-批量更改当前目录的文件后缀名

    #!/bin/bash path=. for file in $(ls $path) do if [ -f $file ] then filename=${file%.*} bak=${file#*. ...