<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>
<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>