MFC下编写的Split函数

代码
四个参数说明如下:
a:要分割的字符串
b:存放的数组,要定义到足够能放下所有分割结果。
c:分割后实际生成的数组元素最大下标,如果没有元素生成,则函数调用后为
- 1 。注意,c在函数调用后值要发生变化,这是一个地址引用参数。
d:分隔符,长度不限,并不限定为一个字符
void  Split(CString a, CString  * b,  int   & c, CString d)
{
int  d_len = d.GetLength();
int  j = 0 ;
int  n = 0 ;
int  m_pos;
while ( 1 )
{
   m_pos
=  a.Find(d,j);
   
if (m_pos ==- 1   &&  j == 0 )
        {
    c
=- 1 ;
    
break ;
   }
 
   
if (m_pos ==- 1   &&  j != 0 )
   {
    b[n]
= a.Mid(j,a.GetLength() - j);
    c
= n;
    
break ;
   }
 
   
if (j == 0 )
   {
    b[n]
= a.Mid( 0 ,m_pos);
    j
= m_pos + d_len;
   }
   
else
   {
    b[n]
= a.Mid(j,m_pos - j);
    j
= m_pos + d_len;
   }
   n
++ ;
}
}
下面举例说明调用方法:
CString b[
20 ];
CString a
= " hello0|!nihao|!how are you|!123456|!111 " ;
int  c = 0 ;
CString d
= " ! " ;
CString t;
 
Split(a,b,c,d);
if  (c !=- 1 )
{
for  ( int  i = 0 ;i <= c;i ++ )
{
AfxMessageBox(b[i]);
}
}
else
{
AfxMessageBox(
" 找不到此项 " );
}
 

 

你可能感兴趣的:(split)