MFC - 分割字符串

//
// 分割字符串
//void CDM_DemoDlg::fnSplitString(CString szSrc, char ch, list<CString> &listStr)
{
    listStr.clear();                              // 清理list容器
    szSrc.TrimLeft();                             // 第一步: 防止字符串的最前面和末尾出现空格,所以先进行排查,如果有则删除
    szSrc.TrimRight();
    szSrc.TrimLeft(ch);                           // 第二步: 防止字符串的第一位和最后一位出现要分割的字符先从前后排除
    szSrc.TrimRight(ch);    
    int nPos = szSrc.Find(ch);                    // 第三步: 查找要分割的字符串中是否带分割的字符,如果带则返回分隔符的位置(从0开始),否则返回-1.
    if (-1 == nPos)                               // 第四步: 如果返回的结果为-1,则说明未找到分隔符,那么将当期的字符串压入list容器并返回.
    {
        listStr.push_back(szSrc);
        return;
    }
    while (-1 != nPos)                           // 第五步:如果返回的结果不为-1,则说明找到分隔符,进入while循环
    {
        CString szTemp(szSrc.Left(nPos));        // 第六步: 先将分隔符前面的所有字符组成新的字符串
        szTemp.TrimLeft();                       // 第七步: 新分割的字符串的第一个字符和最后一个字符带有空格,所以先剔除空格
        szTemp.TrimRight();
        if (0 != nPos || !szTemp.IsEmpty())      // 第八步: 将最新的字符串压入list容器中
        {
            listStr.push_back(szTemp);
        }
        szSrc = szSrc.Mid(nPos+1);               // 第九步: 将nPos+1到源字符串末尾的所有字符组成新的源字符串
        nPos = szSrc.Find(ch);                   // 第十步: 在新的源字符串中查找分隔符    
        if ( -1 ==nPos &&!szSrc.IsEmpty())       // 第十一步: 如果nPos == -1,则说明未找到,那么如果新的源字符串不为空的情况下则压入list容器中
        {
            listStr.push_back(szSrc);
        }
    }
}

 

转载于:https://www.cnblogs.com/DuanLaoYe/p/5455355.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值