字符串的算法

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:18px;"></span></span><pre name="code" class="cpp"><span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;">//1.截取字符串中的数字</span>
<span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="cpp">char vipExplain[80]={0};
			sprintf(vipExplain,"%s",CLobbyCommon::getInstance()->m_lobbyMsg.vipexplain().c_str());
			char tempwhite[32]={0};
			char tempblack[80]={0};
			int j=0;
			int xbox=0;
			int blackindex=0;
			for(;xbox<sizeof(vipExplain);xbox++)
			{
				tempwhite[j++]=vipExplain[xbox];
				if(vipExplain[xbox]==']')
				{
					++xbox;
					break;
				}
			}
			tempwhite[j]='\n';
			for(;xbox<sizeof(vipExplain);xbox++)
			{
				tempblack[blackindex++]=vipExplain[xbox];
				//if(vipExplain[xbox]=='\n')
				//	break;
			}
			//tempblack[blackindex]='\n';


 
<span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;">//2截取字符串中的数字</span>
<span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="cpp">void CLobbyCash::CutString(string ptr,int* reservedata)  //jiequ string
{
	int i=0,j=0,n=0;
	int sum=ptr.size();

	while(i<sum)
	{
		char strint[32]={0};
		while((ptr[i]>='0' && ptr[i]<='9') && i<sum)
		{
			strint[j++]=ptr[i++];
			if(!(ptr[i]>='0' && ptr[i]<='9'))
			{
				reservedata[n]=atoi(strint);
				//cout<<b[n]<<endl;
				n++;
				j=0;
			}
		}
		i++;

	}
}


 
<span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;">//3,替换字符串的字串</span>
<span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="cpp">//JAVA中很多库函数可以直接使用,C++只好自己写

//   字符串替换函数.  
//   能替换所有的要替换的字符串,被替换的字符串和替换的字符串不一定一样长.  
//   pInput   -   输入字符串.  
//   pOutput   -   输出字符串,   要保证足够的空间可以存储替换后的字符串.  
//   pSrc   -   要被替换的子字符串,   比如“你妈”  
//   pDst   -   要替换成的字符串,   比如“一万字草泥马在心中崩腾” 
//   注意:以上的字符串均要以'\0'结尾.  
//  
void   Substitute(char   *pInput,   char   *pOutput,   char   *pSrc,   char   *pDst)  
{  
	char         *pi,   *po,   *p;  
	int           nSrcLen,   nDstLen,   nLen;  
	
	//   指向输入字符串的游动指针.  
	pi   =   pInput;          
	//   指向输出字符串的游动指针.  
	po   =   pOutput;  
	//   计算被替换串和替换串的长度.  
	nSrcLen   =   strlen(pSrc);  
	nDstLen   =   strlen(pDst);  
	
	//   查找pi指向字符串中第一次出现替换串的位置,并返回指针(找不到则返回null).        
	p   =   strstr(pi,   pSrc);  
	if(p)  
	{  
		//   找到.  
		while(p)  
		{  
			//   计算被替换串前边字符串的长度.  
			nLen   =   (int)(p   -   pi);  
			//   复制到输出字符串.  
			memcpy(po,   pi,   nLen);  
			memcpy(po   +   nLen,   pDst,   nDstLen);  
			//   跳过被替换串.  
			pi   =   p   +   nSrcLen;  
			//   调整指向输出串的指针位置.  
			po   =   po   +   nLen   +   nDstLen;  
			//   继续查找.  
			p   =   strstr(pi,   pSrc);  
		}  
		//   复制剩余字符串.  
		strcpy(po,   pi);  
	}  
	else  
	{  
		//   没有找到则原样复制.  
		strcpy(po,   pi);  
	}  
}  


 
<span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;">
</span>
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
因各个项目中需要使用根据字符串计算数值,这里写出一个算法,专门计算字符串。配有大量常用公式。只有一个人方法,直接调用即可。 类名:CustomMath 函数名:Calculations(string value) 说明:求解算式表达式字符串的值 表达式中包含的符号或函数: truncate, ceiling,floor,round,log10, sign,sinh,sqrt, asin,atan,cosh, tanh, sin,cos,tan ,abs,acos, exp,log,max,min,pow,mod,+,-,*,/,',',(,) 函数说明:(不区分大小写) truncate(num) 计算指定数的整数部分 truncate(1.23)=1 ceiling (num) 返回大于或等于指定的双精度浮点数的最小整数值 ceiling(1.23)=2 floor(num) 返回小于或等于指定双精度浮点数的最大整数 floor(1.23)=1 round(num) 将双精度浮点值舍入为最接近的整数值 round(1.23)=1 round(num,num1) 将小数值按指定的小数位数舍入 round(1.23,1)=1.2 log10(num) 返回指定数字以 10 为底的对数 log10(10)=1 sign(num) 返回表示数字符号的值 sign(1.23)=1 sinh(num) 返回指定角度的双曲正弦值 sinh(1.23)=1.5644 sqrt(num) 返回指定数字的平方根 sqrt(9)=3 sqrt(num,num1) 返回指定数字的num1根 sqrt(27,3)=3 asin(num) 返回正弦值为指定数字的角度 asin(0.5)=PI/6 atan(num) 返回正切值为指定数字的角度 atan(1)=45 cosh(num) 返回指定角度的双曲余弦值 cosh(1.23)=1.8567 tanh(num) 返回指定角度的双曲正切值 tanh(1.23)=0.8425 sin(num) 返回指定角度的正弦值 sin(PI/6)=0.5 cos(num) 返回指定角度的余弦值 sin(PI/3)=0.5 tan(num) 返回指定角度的余切值 sin(PI/4)=1 abs(num) 返回数字的绝对值 abs(-12)=12 acos(num) 返回余弦值为指定数字的角度 acos(0.5)=PI/3 exp(num) 返回 e 的指定次幂 exp(1)=2.718 log(num) 返回指定数字的自然对数(底为 e) log(e)=1 log(num,num1) 返回指定数字在使用指定底时的对数 log(e,e)=1 max(num,um1) 返回最大值 max(1,2)=2 min(num,num1) 返回最小值 min(1,2)=1 pow(num,num1) 返回指定数字的指定次幂 pow(2,2)=4 mod(num,num1) 返回余数 mod(3,2)=1 常量: PI 值:3.14159265358979323846 E 值:2.7182818284590452354 YEAR 值:当前年份 MONTH 值:当前月份 DAY 值: 当前日 HOUR 值:当前时 MINUTE 值:当前分 SECOND 值:当前秒 RANDOM 值:一个随机数(0-1 之间) 实例 系统计算:1+2*3/4-0.5=2 函数计算:1+2*3/4-0.5=2 调用方式:CustomMath.Calculations("1+2*3/4-0.5") 系统计算:(1+2)*3/4-0.5=1.75 函数计算:(1+2)*3/4-0.5=1.75 调用方式:CustomMath.Calculations("(1+2)*3/4-0.5") 系统计算:(sin(pi)+sqrt(3+5*7+(2+8/4*5+2)))/6=1.20185042515466 公式计算:(sin(pi)+sqrt(3+5*7+(2+8/4*5+2)))/6=1.20185042515466 调用方式:CustomMath.Calculations("(sin(pi)+sqrt(3+5*7+(2+8/4*5+2)))/6") 系统计算:sin(pow(3,2)/4)+3.5-9*sqrt(81)=-76.7219268031121 函数计算:sin(pow(3,2)/4)+3.5-9*sqrt(81)=-76.7219268031121 调用方式:CustomMath.Calculations("sin(pow(3,2)/4)+3.5-9*sqrt(81)")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值