首页 > 代码库 > VC/MFC分割字符串(SplitString)返回CStringArray
VC/MFC分割字符串(SplitString)返回CStringArray
引自:http://bbs.csdn.net/topics/60321228
原版:
CStringArray* SplitString(CString string, char pattern)
{
CStringArray* strArray = new CStringArray();
CString strTemp;
char c;
for(int i=0;i<string.GetLength();i++)
{
c=string[i];
if(c==pattern)
{
strArray->Add(strTemp);
strTemp="";
}
else
{
strTemp+=c;
}
}
strArray->Add(strTemp);
return strArray;
}
修改版(以单个字符分割)
CStringArray* SplitString(CString string, char pattern)
{
CStringArray* strArray = new CStringArray();
CString strTemp;
strTemp = string;
int iPos = 0;
while(iPos != -1)
{
iPos = strTemp.Find(pattern);
if(iPos == -1)
{
break;
}
strArray->Add(strTemp.Left(iPos));
strTemp = strTemp.Mid(iPos+1, strTemp.GetLength());
}
strArray->Add(strTemp);
return strArray;
}
修改版2(以多个字符分割)
CStringArray* SplitString(CString string, char pattern[])
{
int nPattern = strlen(pattern);
CStringArray* strArray = new CStringArray();
CString strTemp;
char c;
BOOL bFind = FALSE;
for(int i=0; i<string.GetLength(); i++)
{
c = string[i];
for(int j=0; j<nPattern; j++)
{
if(c == pattern[j])
{
if(strTemp != "")
{
strArray->Add(strTemp);
}
bFind = TRUE;
break;
}
bFind = FALSE;
}
if(bFind)
{
strTemp = "";
}
else
{
strTemp += c;
}
}
if(strTemp != "")
{
strArray->Add(strTemp);
}
return strArray;
}
使用:
char s[] = {‘ ‘, ‘,‘, ‘\0‘};
CStringArray strPolygon = *SplitString(strTemp, s);