自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Ratel 網(wǎng)絡(luò)庫(kù)之配置文件模塊設(shè)計(jì)思路

網(wǎng)絡(luò) 通信技術(shù)
配置文件讀取應(yīng)該在程序的開(kāi)始進(jìn)行初始化,從配置文件中讀取程序的相關(guān)配置和用戶(hù)自定義的信息。如:程序的進(jìn)程的啟動(dòng)個(gè)數(shù)、每個(gè)進(jìn)程應(yīng)該啟動(dòng)的線(xiàn)程數(shù)的個(gè)數(shù)、程序在Linux中是否以守護(hù)進(jìn)程方式進(jìn)行啟動(dòng)等。
本文轉(zhuǎn)載自微信公眾號(hào)「暢游碼海」,作者CallMeEngineer 。轉(zhuǎn)載本文請(qǐng)聯(lián)系暢游碼海公眾號(hào)。
  •  配置文件讀取思路(CConfig類(lèi)):
    • 配置文件讀取應(yīng)該在程序的開(kāi)始進(jìn)行初始化,從配置文件中讀取程序的相關(guān)配置和用戶(hù)自定義的信息。如:程序的進(jìn)程的啟動(dòng)個(gè)數(shù)、每個(gè)進(jìn)程應(yīng)該啟動(dòng)的線(xiàn)程數(shù)的個(gè)數(shù)、程序在Linux中是否以守護(hù)進(jìn)程方式進(jìn)行啟動(dòng)等。配置文件的設(shè)計(jì)應(yīng)該具有美觀、整潔等特點(diǎn)。

配置文件

  • 以 '#' 開(kāi)始的每一行配置應(yīng)該當(dāng)作提示內(nèi)容,在讀取時(shí)應(yīng)該直接跳過(guò)
  • 當(dāng)讀取到 “[” 符號(hào)時(shí),應(yīng)該進(jìn)行跳過(guò)方便我們對(duì)配置文件的分組
  • 其次應(yīng)該注意到對(duì)空格的過(guò)濾,防止空格對(duì)我們讀取進(jìn)行干擾

配置類(lèi)的運(yùn)行思路:

CConfig

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

  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.  //獲取配置參數(shù) 
  14.  std::string getParam(std::string param); 
  15.  //設(shè)置配置參數(shù) 
  16.  std::string setParam(); 
  17. private: 
  18.   
  19.  bool file_isok; //文件是否讀取成功 
  20.  int ParamHandle(std::string strline); //處理每一行的參數(shù) 
  21. public
  22.  std::map<std::string,std::string> paramstore; // 保存所有參數(shù) 
  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()){                      //驗(yàn)證文件是否可以打開(kāi),并進(jìn)行標(biāo)記 
  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 << "文件讀取出錯(cuò)" << 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'){ //過(guò)濾空行 
  38.     start++; 
  39.    }else
  40.     break; 
  41.    } 
  42.   } 
  43.   for(end = strlen(str)-1; end > 0; end--){   //去掉末尾的空格和不可見(jiàn)字符 
  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 << "未讀取到任何參數(shù)" << std::endl; 
  59.   return -1; 
  60.  } 
  61.  return 0; 
  62. int CConfig::ParamHandle(std::string strline){ //跳過(guò)#開(kāi)頭和'['開(kāi)頭的組標(biāo)記 
  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)); 

 

 

責(zé)任編輯:武曉燕 來(lái)源: 暢游碼海
相關(guān)推薦

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配置文件編程語(yǔ)言

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

2011-01-13 16:27:26

Linux配置文件

2011-01-19 14:00:21

2018-08-08 10:10:54

Windows 10Windows網(wǎng)絡(luò)配置

2010-12-28 16:35:32

Outlook 配置文

2010-12-27 14:59:31

Outlook 配置文

2011-03-25 17:13:37

Nagios配置文件

2010-08-05 14:36:07

NFS服務(wù)

2010-05-05 16:14:09

Unix管理

2009-09-22 10:23:15

Hibernate配置

2011-01-21 15:08:45

Sendmail
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)