成人免费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

前端模塊化

2020-04-09 13:23:29

Nginx配置文件模板

2010-05-31 11:10:37

Nagios pnp

2020-11-20 06:30:07

Pythonini配置文件編程語言

2010-06-17 21:34:05

2011-03-04 13:58:41

2011-03-04 14:01:48

VSFTPD.CONF

2011-03-04 14:04:43

2018-08-08 10:10:54

Windows 10Windows網絡配置

2011-01-19 14:00:21

2011-01-13 16:27:26

Linux配置文件

2010-12-28 16:35:32

Outlook 配置文

2010-12-27 14:59:31

Outlook 配置文

2009-07-09 15:55:18

WebWork配置文件

2011-03-28 09:07:26

Nagios配置文件

2011-04-01 16:30:49

Nagios

2011-03-28 15:52:16

Nagios配置文件

2011-03-03 09:14:38

PureFTPd
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99国内精品 | 99久久精品视频免费 | 在线一区二区观看 | 亚洲精品一区二区三区丝袜 | 国产激情偷乱视频一区二区三区 | 日韩一二三区视频 | 日韩免费一级 | 日韩高清一区 | 国产精品一区2区 | 亚洲精品在线播放 | 久草网址| 国产精品久久久久免费 | 久久精品国产99国产精品亚洲 | 毛片毛片毛片毛片毛片 | 欧美精品99| 黑人巨大精品欧美黑白配亚洲 | 一区二区日本 | 久久久久久成人 | 亚洲久久久 | 久久久久久亚洲精品 | 自拍偷拍亚洲欧美 | 精品久久久一区 | 91动漫在线观看 | 亚洲国产欧美日韩 | 久久久夜色精品亚洲 | 国产精品成人品 | 日韩欧美一区二区三区四区 | 精品久久久久久久久久久久久久 | 久久久免费毛片 | 精品免费国产一区二区三区 | 欧美精品久久久 | 精品区一区二区 | 中文字幕在线观看一区二区 | www.日韩 | 久在线视频播放免费视频 | 亚州av| 国内自拍视频在线观看 | 日韩网站免费观看 | 国产一级片一区二区三区 | 一区二区日本 | 久久免费福利 |