配置文件类设计思路是什么,配置文件类设计思路的软件
私藏项目实操分享
配置文件读取思路(CConfig类):配置文件读取应该在程序的开始进行初始化,从配置文件中读取程序的相关配置和用户自定义的信息。如:程序的进程的启动个数、每个进程应该启动的线程数的个数、程序在Linux操作系统操作系统中是否以守护进程方式进行启动等。配置文件的设计应该具有美观、整洁等特点。
以#开始的每一行配置应该当作提示内容,在读取时应该直接跳过当读取到"[" 符号时,应该进行跳过方便我们对配置文件的分组其次应该注意到对空格的过滤,防止空格对我们读取进行干扰配置类的运行思路:代码如下(含详细注释):
/*
*CConfig.h
*/
#包括输入输出流
#包含地图
CConfig类
{
公共:
//配置文件的路径
CConfig(STD:string filename= test。conf’);
~ CConfig(void);
//初始化配置
int init config();
//获取配置参数
STD:string get param(STD:string param);
//设置配置参数
STD:string set param();
私人:
bool file _ isok//文件是否读取成功
int param handle(STD:string strline);//处理每一行的参数
公共:
std:map std:string,STD:string param store;//保存所有参数
标准:字符串文件名;//文件名
};/*
* CConfig.cpp
*/
#include stdafx.h
#include Config.h
#包括文件操作
#包含字符串
#包括字符串
CConfig:CConfig(STD:string filename):file _ isok(false)
{
STD:if流FP;
fp.open(filename.c_str(),STD:IOs:in);
if(fp.is_open()){ //验证文件是否可以打开,并进行标记
file _ isok=true
this- filename=文件名;
}
}
CConfig:~CConfig(void)
{
}
STD:string CConfig:get param(STD:string param){
对于(自动pa : paramstore){
如果(参数优先==参数)
返回pa .秒
}
返回"";
}
int CConfig:InitConfig(){
如果(!file _ isok)return-1;//初始化失败
STD:if流FP;
fp.open(filename.c_str(),STD:if stream:in);
如果(!fp){
标准* cerr 文件读取出错STD:endl;
return-1;
}
字符串[100];
while(fp.getline(str,100)){ //读取每一行的配置文件
无符号整数开始,结束
for(start=0;start strlen(str);开始){
if(str[start]== str[start]== \ r str[start]== \ n ){//过滤空行
开始;
}否则{
打破;
}
}
for(end=strlen(str)-1;结束0;end - ){ //去掉末尾的空格和不可见字符
if(str[end]== str[end]== \ r str[end]== \ n ){
end-;
}否则{
打破;
}
}
如果(开始结束){
std:string strs(str,start,end-start 2);
参数句柄(strs);
}
}
if(paramstore.size()==0){
标准* cerr 未读取到任何参数STD:endl;
return-1;
}
返回0;
}
int CConfig:param handle(STD:string strline){//跳过#开头和[开头的组标记
if(strline.empty())返回-1;
int flageq=0;
for(int I=0;我坚持。size();i ){
if(strline[0]== # strline[0]==[)返回0;
if(strline[i]===){
flageq=I;
打破;
}
}
std:string key(strline,0,flageq);
标准:字符串值(strline,flageq 1,strline。size()-flageq);
参数存储。insert(STD:make _ pair(key,value));
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。