//根据多个分隔符来分割字符串
source 源串
seprator分隔符
count分割后的子串数量
返回值:分割后的子串
CString* ExtractStr(LPCTSTR source, LPCTSTR seprator, int *count)
- {
- int iSubStringCount,nIndex=0;
- CString strSource=source,strSeperator=seprator,*pstrSubStrings;
-
- if(strSeperator.GetLength()==0)
- {
- *count=0;
- return NULL;
- }
-
- //seprator中的所有分隔符全部替换成第一个,并统计source中seprator的个数
- iSubStringCount =1;
-
- for(int i=0;i<strSource.GetLength();i++)
- {
- if(strSource[i]==strSeperator[0])
- iSubStringCount++;
- }
-
- for(int i=1;i<strSeperator.GetLength();i++)
- {
- iSubStringCount+=strSource.Replace(strSeperator[i],strSeperator[0]);
- }
-
- pstrSubStrings=new CString[iSubStringCount];
-
- int nNewIndex,nCount=0;
- while(nIndex<strSource.GetLength())
- {
- nNewIndex=strSource.Find(strSeperator[0],nIndex);
- if(nNewIndex>=0)
- pstrSubStrings[nCount++]=strSource.Mid(nIndex,nNewIndex-nIndex);
- else
- pstrSubStrings[nCount++]=strSource.Mid(nIndex);
-
- nIndex+=pstrSubStrings[nCount-1].GetLength()+1;
- }
-
- *count=iSubStringCount;
- return pstrSubStrings;
- }
//释放内存
- void FreeStrings(CString *lpstr, int count)
- {
- if(lpstr==NULL || count<=0)
- {
- return;
- }
-
- delete[] lpstr;
- }
例子:
- CString strSample=TEXT("aa,bb,cc,dd");
- int nCount=0;
- CString pSubStrings=ExtractStr(strSample,TEXT(","),&nCount);
- ....
- FreeStrings(pSubStrings,nCount);//用完子串后释放内存
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。