CString字符串分割

来源:互联网 发布:口袋妖怪配信数据导入 编辑:程序博客网 时间:2024/06/02 03:00

网上copy的字符串分割


#include <iostream>#include <cstring>#include <atlcomtime.h>using namespace std;//最后一个参数返回的是子字符串的数量CString * SplitString(CString str, char split, int& iSubStrs);int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){int nRetCode = 0;// initialize MFC and print and error on failurCString str = "sssdf sfds jieuri lj122 98098"; //CString str = "sfsfsf";CString* pStr;int iSubStrs;pStr = SplitString(str, ' ', iSubStrs);//如果子字符串的数量为1if (iSubStrs == 1){//Convert CString to charchar* pCh = (LPSTR)(LPCTSTR)str;printf("%s\n", pCh);}else{//输出所有子字符串for (int i = 0; i < iSubStrs; i++){//Convert CString to charchar* pCh = (LPSTR)(LPCTSTR)pStr[i];printf("%s\n", pCh);}delete []pStr;}system("pause");return nRetCode;}CString * SplitString(CString str, char split, int& iSubStrs){int iPos = 0; //分割符位置int iNums = 0; //分割符的总数CString strTemp = str;CString strRight;//先计算子字符串的数量while (iPos != -1){iPos = strTemp.Find(split);if (iPos == -1){break;}strRight = strTemp.Mid(iPos + 1, str.GetLength());strTemp = strRight;iNums++;}if (iNums == 0) //没有找到分割符{//子字符串数就是字符串本身iSubStrs = 1; return NULL;}//子字符串数组iSubStrs = iNums + 1; //子串的数量 = 分割符数量 + 1CString* pStrSplit;pStrSplit = new CString[iSubStrs];strTemp = str;CString strLeft;for (int i = 0; i < iNums; i++){iPos = strTemp.Find(split);//左子串strLeft = strTemp.Left(iPos);//右子串strRight = strTemp.Mid(iPos + 1, strTemp.GetLength());strTemp = strRight;pStrSplit[i] = strLeft;}pStrSplit[iNums] = strTemp;return pStrSplit;}