字符串的算法

来源:互联网 发布:admair 知乎 编辑:程序博客网 时间:2024/06/09 23:44

<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