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); } } }