依赖项:

依赖于 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. 利用python的matplotlib处理计算数据

    #!/usr/bin/python # -*- coding: UTF-8 -*- import numpy as np import matplotlib.pyplot as plt import ...

  2. K8S Kubernetes 架构

    Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统. Kubernetes架构 Kubernetes借鉴了Borg的设计理念,比如Pod.Service.Label ...

  3. ubuntu之路——day11.5 迁移学习

    在深度学习领域中,最强力的理念之一就是可以将神经网络学习的一种知识应用到另一个独立的任务中. 看上面的例子,首先我们有一个已经完成训练的神经网络,其目标是图像识别,我们有了绿色的1000000张图片并 ...

  4. [Android] 安卓手机不用root删除自带app

    声明:本文档仅供测试,因删除引起的一切问题,本人概不负责 声明:本文档仅供测试,因删除引起的一切问题,本人概不负责 声明:本文档仅供测试,因删除引起的一切问题,本人概不负责 转载请注明出处:https ...

  5. Java学习笔记-文件读写和Json数组

    Java文件读写 Java中I/O流对文件的读写有很多种方法,百度后主要看了以下三种 第一种方式:使用FileWriter和FileReader,对文件内容按字符读取,代码如下 String dir ...

  6. [spring-boot] pom文件 spring-boot-starter-parent

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  7. 漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析

    漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析 漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析 - FreeBuf互联网安全新媒体平台 https: ...

  8. 搭建Nuxt项目(搭配Element UI、axios)

    使用Nuxt Nuxt.js文档:https://zh.nuxtjs.org/guide/ 开始 初始化Nuxt项目 npx create-nuxt-app <项目名> // or yar ...

  9. git如何将旧commit的相关notes复制到新commit?

    答: git notes copy <old-commit> <new-commit>

  10. Flutter ExpansionPanel 可展开的收缩控件

    文档:https://api.flutter.dev/flutter/material/ExpansionPanel-class.html demo: import 'package:flutter/ ...