10 楼hzbigdog(苦命的程序员)回复于 2004-03-15 16:37:10 得分 0
算了,就共享一下我得代码吧!不过要给分哦!
//将字符串拆解成数组,以Flag为分解标志
//例如:AnsiString S = “asd,234,sdf,22″;
TStringList *T = new TStringList;
char flag =’,';
ResolveString(&S, T, &flag);
for (int i = 0; i < T->Count; i++)
T->String(i);//访问拆分好的字符串
void ResolveString(AnsiString *Source, TStringList *Aim, char *flag)
{
const int Count = Source->Length();
int site = 1, Len = 0;//当前截取的位置
AnsiString astrTemp, OutStr;
Aim->Clear();
//测试要分解为多少各子串
for (int i = 1; i <= Count; i++)
if (*Source->SubString(i,1).c_str() == *flag) Len++;
//开始攫取字符
for (int i = 0; i < Len; i++)//数组层循环
{
for (; site <= Count; site++)//字符层循环
{
astrTemp = Source->SubString(site,1); //获取一个字符
if (*astrTemp.c_str() == *flag)
{ /*如果发现当前取到的为分隔符,那么条过分隔符,结束循环
并开始下一组字符串的截取*/
site++;
break;
}
OutStr = OutStr + astrTemp;//合并成字符串
}
Aim->Add(OutStr);
OutStr = “”;
}
}Top
11 楼hzbigdog(苦命的程序员)回复于 2004-03-15 16:45:17 得分 0
一个小错误
//例如:AnsiString S = “asd,234,sdf,22″;
中”asd,234,sdf,22″;最后必须加一个’,'。正确的是
AnsiString S = “asd,234,sdf,22,”;
赫赫1;你也可以自己优化一下!