成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Ratel 網絡庫之配置文件模塊設計思路

網絡 通信技術
配置文件讀取應該在程序的開始進行初始化,從配置文件中讀取程序的相關配置和用戶自定義的信息。如:程序的進程的啟動個數、每個進程應該啟動的線程數的個數、程序在Linux中是否以守護進程方式進行啟動等。
本文轉載自微信公眾號「暢游碼海」,作者CallMeEngineer 。轉載本文請聯系暢游碼海公眾號。
  •  配置文件讀取思路(CConfig類):
    • 配置文件讀取應該在程序的開始進行初始化,從配置文件中讀取程序的相關配置和用戶自定義的信息。如:程序的進程的啟動個數、每個進程應該啟動的線程數的個數、程序在Linux中是否以守護進程方式進行啟動等。配置文件的設計應該具有美觀、整潔等特點。

配置文件

  • 以 '#' 開始的每一行配置應該當作提示內容,在讀取時應該直接跳過
  • 當讀取到 “[” 符號時,應該進行跳過方便我們對配置文件的分組
  • 其次應該注意到對空格的過濾,防止空格對我們讀取進行干擾

配置類的運行思路:

CConfig

代碼如下(含詳細注釋):

  1. /* 
  2.  *CConfig.h 
  3. */ 
  4. #include<iostream> 
  5. #include<map> 
  6. class CConfig 
  7. public
  8.  //配置文件的路徑 
  9.  CConfig(std::string filename = "test.conf"); 
  10.  ~CConfig(void); 
  11.  //初始化配置 
  12.  int InitConfig(); 
  13.  //獲取配置參數 
  14.  std::string getParam(std::string param); 
  15.  //設置配置參數 
  16.  std::string setParam(); 
  17. private: 
  18.   
  19.  bool file_isok; //文件是否讀取成功 
  20.  int ParamHandle(std::string strline); //處理每一行的參數 
  21. public
  22.  std::map<std::string,std::string> paramstore; // 保存所有參數 
  23.  std::string filename; //文件名 
  24.   
  25. }; 
  1. /* 
  2.  * CConfig.cpp 
  3. */ 
  4. #include "stdafx.h" 
  5. #include "Config.h" 
  6. #include<fstream> 
  7. #include <string> 
  8. #include<cstring> 
  9. CConfig::CConfig(std::string filename):file_isok(false
  10.  std::ifstream fp; 
  11.  fp.open(filename.c_str(),std::ios::in); 
  12.  if(fp.is_open()){                      //驗證文件是否可以打開,并進行標記 
  13.   file_isok = true
  14.   this->filename = filename; 
  15.  } 
  16.  
  17. CConfig::~CConfig(void) 
  18. std::string CConfig::getParam(std::string param){ 
  19.  for(auto pa : paramstore){ 
  20.   if(pa.first == param) 
  21.    return pa.second
  22.  } 
  23.  return ""
  24. int CConfig::InitConfig(){ 
  25.  if(!file_isok)return -1; //初始化失敗 
  26.  std::ifstream fp; 
  27.  fp.open(filename.c_str(), std::ifstream::in); 
  28.  if(!fp){ 
  29.   std::cerr << "文件讀取出錯" << std::endl; 
  30.   return -1; 
  31.  } 
  32.  
  33.  char str[100]; 
  34.  while(fp.getline(str,100)){    //讀取每一行的配置文件 
  35.   unsigned int start, end
  36.   for(start = 0; start < strlen(str); start++){ 
  37.    if(str[start] == ' '|| str[start] == '\r' || str[start] == '\n'){ //過濾空行 
  38.     start++; 
  39.    }else
  40.     break; 
  41.    } 
  42.   } 
  43.   for(end = strlen(str)-1; end > 0; end--){   //去掉末尾的空格和不可見字符 
  44.    if(str[end] == ' '|| str[end] == '\r' || str[end] == '\n'){ 
  45.     end--; 
  46.    }else
  47.     break; 
  48.    } 
  49.   } 
  50.   if(start<end){ 
  51.    std::string strs(str, start, end-start + 2); 
  52.    ParamHandle(strs); 
  53.   } 
  54.  
  55.  
  56.  } 
  57.  if(paramstore.size() == 0){ 
  58.   std::cerr << "未讀取到任何參數" << std::endl; 
  59.   return -1; 
  60.  } 
  61.  return 0; 
  62. int CConfig::ParamHandle(std::string strline){ //跳過#開頭和'['開頭的組標記 
  63.  if(strline.empty())return -1; 
  64.  int flageq = 0; 
  65.  for(int i = 0; i < strline.size(); i++){ 
  66.   if(strline[0] =='#' || strline[0] == '['return 0; 
  67.   if(strline[i] == '='){ 
  68.     flageq = i; 
  69.     break; 
  70.   } 
  71.  } 
  72.  std::string key(strline, 0, flageq); 
  73.  std::string value(strline, flageq + 1, strline.size() - flageq); 
  74.  paramstore.insert(std::make_pair(key, value)); 

 

 

責任編輯:武曉燕 來源: 暢游碼海
相關推薦

2011-03-02 13:12:37

vsftpd配置

2010-02-03 09:19:31

Python模塊

2013-08-20 15:31:18

前端模塊化

2010-05-31 11:10:37

Nagios pnp

2020-04-09 13:23:29

Nginx配置文件模板

2020-11-20 06:30:07

Pythonini配置文件編程語言

2010-06-17 21:34:05

2011-03-04 14:01:48

VSFTPD.CONF

2011-03-04 14:04:43

2011-03-04 13:58:41

2018-08-08 10:10:54

Windows 10Windows網絡配置

2011-01-13 16:27:26

Linux配置文件

2011-01-19 14:00:21

2010-12-28 16:35:32

Outlook 配置文

2010-12-27 14:59:31

Outlook 配置文

2009-09-22 10:23:15

Hibernate配置

2010-05-05 16:14:09

Unix管理

2010-08-05 14:36:07

NFS服務

2011-03-25 17:13:37

Nagios配置文件

2011-01-21 15:08:45

Sendmail
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级大片 | 亚洲综合字幕 | 国产精品日韩在线观看一区二区 | 精品丝袜在线 | 亚洲综合在线视频 | 国产色播av在线 | 国产一区二区视频免费在线观看 | 日本成人福利视频 | 亚洲成人动漫在线观看 | 国产精品一区二区在线 | 欧美不卡一区二区 | 精国产品一区二区三区四季综 | 欧美激情国产日韩精品一区18 | 色综合美女 | 欧美午夜一区二区三区免费大片 | 成人影院一区二区三区 | 请别相信他免费喜剧电影在线观看 | 81精品国产乱码久久久久久 | 成人欧美日韩一区二区三区 | 久久久久久亚洲精品 | 最近中文字幕第一页 | 中文字幕在线人 | 欧美不卡一区二区 | 色资源站 | 成人日批视频 | 99re热精品视频 | 国产99热在线 | 日日夜夜草 | 欧美乱码精品一区二区三区 | 97av在线 | 中文字幕在线精品 | 视频一区二区三区四区五区 | 国产精品欧美一区二区三区不卡 | 国产一区不卡 | 亚洲不卡 | 一区二区国产精品 | 亚洲高清在线 | 成人福利网 | 亚洲国产69 | 四虎网站在线观看 | 99re视频在线观看 |