Linux 上写C++ (1)——替换字串、读取配置文件
1、替换字串
string IVR_COMMON::string_replace(string data, string Old, string New)
{ int iPos=0;
int iOldSize=Old.size();
int iNewSize=New.size();
while((iPos=data.find(Old,iPos))!=string::npos)
{
data.replace(iPos,iOldSize,New);
iPos+=iNewSize;
}
return data;
}
1、读取配置文件
//读取日志文件,根据key得出value值,日志文件按行读取,等号前面是key,后面是value以分号结束
#是否打印日志:true打印,false不打印
------------------------配置文件-----------------------------------------------------------------
islog=true;
#充值卡充值(不用了)
IVR_1=127.0.0.1|8311|saleserv/httptran/CrmService|1024|5;
#充值卡充值201511月16日lixy13
IVR_2=127.0.0.1|8311|saleserv/httptran/CrmService|1024|5|true|IVR_ITF_CRM_PAYFEE_REG;
#积分查询接口
IVR_3=127.0.0.1|8171|scoreserv/httptran/CrmService|1024|5;
-----------------------------------------------------------------------------------
string IVR_COMMON::Readini(string filepath,string key)
{
string value=""; //返回值
string tmp="";//临时变量
string var1="";//临时变量
string strkey="";//临时变量
string tempSplit="=";//参数配置默认分隔符
string tempSplitend=";";//参数结束标记
ifstream fin(filepath.c_str());//读取配置文件
char CKey[50]="";
if(!fin)//判断是否找到配置文件
{
strcpy(CKey,key.c_str());
WriteLog("没有找到配置文件",CKey);
}
while(getline(fin,tmp))//循环按行读取
{
var1= tmp.substr(0,1);//
if(var1!="#")//忽略#号开始的行
{
int length_field= tmp.find(tempSplit);//这行中用等号分割取出位置
strkey=tmp.substr(0,length_field);//取出键
if(strkey==key)//所取键与传入键是否相等
{
//若果相等,取出键值
value= tmp.substr(tmp.find(tempSplit)+tempSplit.size(),tmp.find(tempSplitend) -tmp.find(tempSplit)-1);
return value;
}
}
}
return value;
};