按分隔符分割字符串函数

引子

之前写的一篇博客非常好用的MFC隐藏函数 取字符串的任意分隔符子串提到了分割字符串的函数

AfxExtractSubString

这个函数每次只能按一种分隔符分割字符串(比如每次只能按空格或者逗号或者tab来分割),下面列出一个可以同时按任意分隔符(比如字符串里同时由逗号空格或tab)分割字符串的函数(注意如果有多个分隔符直接相连,输出可以为空或指定的nullSubst)

代码

    /*
    * 该函数用delimits里的字符拆分s,传出一个CStringList指针pList,
    * 若trim为真,则不保留分割后的空串(注意不是空白字符)。比如:
    * Tokenize( "a,bc;,d,", ",;", &out_list, TRUE)
    * 会返回3个串:a、bc、d。
    * 若trimFALSE,则用nullSubst用来替代分割后的空串,比如:
    * Tokenize( "a,bc;,d;", ",;", &out_list, FALSE,"[null]" )
    * 会返回5个串:a、bc、[null]、d、[null]。
    * trim默认为FALSE,nullSubst默认为空串。
    */
    void iTokenize(CString s, CString delimits, CStringList* pList, BOOL trim=FALSE, CString nullSubst="")
    {
        ASSERT( !s.IsEmpty() && !delimits.IsEmpty() );
        s += delimits[0];
        for( long index=-1; (index=s.FindOneOf((LPCTSTR)delimits))!=-1; )
        {
            if(index != 0) pList->AddTail( s.Left(index) );
            else if(!trim) pList->AddTail(nullSubst);
            s = s.Right(s.GetLength()-index-1);
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值