Application Development

Software technique, Skills & Applications

Split String April 4, 2009

Filed under: C++Builder — meetme @ 12:19 am

10 楼hzbigdog(苦命的程序员)回复于 2004-03-15 16:37:10 得分 0

算了,就共享一下我得代码吧!不过要给分哦!  
  //将字符串拆解成数组,以Flag为分解标志  
  //例如:AnsiString   S   =   “asd,234,sdf,22″;  
                  TStringList   *T   =   new   TStringList;  
                  char   flag   =’,';  
                  ResolveString(&S,   T,   &flag);  
                  for   (int   i   =   0;   i   <   T->Count;   i++)  
                          T->String(i);//访问拆分好的字符串  
   
  void   ResolveString(AnsiString   *Source,   TStringList   *Aim,   char   *flag)  
  {  
          const   int   Count   =   Source->Length();  
          int   site   =   1,   Len   =   0;//当前截取的位置  
          AnsiString   astrTemp,   OutStr;  
   
          Aim->Clear();  
          //测试要分解为多少各子串  
          for   (int   i   =   1;   i   <=   Count;   i++)  
                  if   (*Source->SubString(i,1).c_str()   ==   *flag)   Len++;  
   
          //开始攫取字符  
          for   (int   i   =   0;   i   <   Len;   i++)//数组层循环  
          {  
                  for   (;   site   <=   Count;   site++)//字符层循环  
                  {  
                          astrTemp   =   Source->SubString(site,1);   //获取一个字符  
                          if   (*astrTemp.c_str()   ==     *flag)  
                          {       /*如果发现当前取到的为分隔符,那么条过分隔符,结束循环  
                                      并开始下一组字符串的截取*/  
                                  site++;  
                                  break;  
                          }  
                          OutStr   =   OutStr   +   astrTemp;//合并成字符串  
                  }  
                  Aim->Add(OutStr);  
                  OutStr   =   “”;  
          }  
  }Top

11 楼hzbigdog(苦命的程序员)回复于 2004-03-15 16:45:17 得分 0

一个小错误  
  //例如:AnsiString   S   =   “asd,234,sdf,22″;  
  中”asd,234,sdf,22″;最后必须加一个’,'。正确的是  
  AnsiString   S   =   “asd,234,sdf,22,”;  
  赫赫1;你也可以自己优化一下!