MFC下编写的Split函数(转)

原文:http://www.cnblogs.com/seaven/archive/2011/01/16/1936654.html

//四个参数说明如下:

//    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("找不到此项");
}    

 

posted @ 2012-12-19 16:19  xiaolongxia  阅读(181)  评论(0)    收藏  举报