科技资讯

Ratel 网络库之配置文件模块设计思路

发布日期:2023-06-18    点击次数:126
[[438245]] 本文转载自微信公众号「畅游码海」,作者CallMeEngineer 。转载本文请联系畅游码海公众号。  配置文件读取思路(CConfig类): 配置文件读取应该在程序的开始进行初始化,从配置文件中读取程序的相关配置和用户自定义的信息。如:程序的进程的启动个数、每个进程应该启动的线程数的个数、程序在Linux中是否以守护进程方式进行启动等。配置文件的设计应该具有美观、整洁等特点。

配置文件

以 '#' 开始的每一行配置应该当作提示内容,在读取时应该直接跳过 当读取到 “[” 符号时,应该进行跳过方便我们对配置文件的分组 其次应该注意到对空格的过滤,防止空格对我们读取进行干扰 配置类的运行思路:

CConfig

代码如下(含详细注释):

/*  *CConfig.h */ #include<iostream> #include<map> class CConfig { public:  //配置文件的路径  CConfig(std::string filename = "test.conf");  ~CConfig(void);  //初始化配置  int InitConfig();  //获取配置参数  std::string getParam(std::string param);  //设置配置参数  std::string setParam(); private:    bool file_isok; //文件是否读取成功  int ParamHandle(std::string strline); //处理每一行的参数 public:  std::map<std::string,std::string> paramstore; // 保存所有参数  std::string filename; //文件名   }; 
/*  * CConfig.cpp */ #include "stdafx.h" #include "Config.h" #include<fstream> #include <string> #include<cstring> CConfig::CConfig(std::string filename):file_isok(false) {  std::ifstream fp;  fp.open(filename.c_str(),std::ios::in);  if(fp.is_open()){                      //验证文件是否可以打开,并进行标记   file_isok = true;   this->filename = filename;  }  } CConfig::~CConfig(void) { } std::string CConfig::getParam(std::string param){  for(auto pa : paramstore){   if(pa.first == param)    return pa.second;  }  return ""; } int CConfig::InitConfig(){  if(!file_isok)return -1; //初始化失败  std::ifstream fp;  fp.open(filename.c_str(), std::ifstream::in);  if(!fp){   std::cerr << "文件读取出错" << std::endl;   return -1;  }   char str[100];  while(fp.getline(str,100)){    //读取每一行的配置文件   unsigned int start, end;   for(start = 0; start < strlen(str); start++){    if(str[start] == ' '


上一篇:为什么 5G专用网络对企业数字化转型至关重要
下一篇:在5G网络建设上连摔“跟头”,美国到底是哪里做错了?