读书人

CString字符串这个方法要升级了!不知

发布时间: 2012-02-28 13:06:36 作者: rapoo

CString字符串这个方法要升级了!!不知道该怎么处理了!着急用!!
CString Info= "A:12,35;B:90,78,90,45;A:988,09;F:0934,879,000; "
比如有如上一个字符串 但等于A时候,从A:到;里面用逗号的数据取出来放到buf里面,其他也是如此执行!!怎么处理谢谢
如等于A:
buf[1]=12;
buf[2]=35;
buf[3]=988;
buf[4]=09;
如等于B:
buf[5]=90;
buf[6]=78;
buf[7]=90;
buf[7]=45;
........


void CGhhDlg::AnalyzeData(CString Info, CString *buf)
{
int loc1=0;
int loc2=0;
CString change= "0 ";
int iLen=strlen(Info);
for (int i =0; i <=8; i++)
{
for(int j=0;j <iLen;j++)
{
change.Format( "%C: ", 'A '+i);
loc1 = Info.Find(change);
loc2 = Info.Find( "; ", loc1);
buf[j] = Info.Mid(loc1 + 2, loc2 - 2 - loc1);
}
}
}

[解决办法]
自己想好算法就可以了.想方便就自己写个字符串的处理类吧.

[解决办法]
AfxExtractSubString()
[解决办法]
CString* buf和buf[i],buf到底是什么类型的要确定哦!
另外,算法不是很好,loc1 = Info.Find(change);loc2 = Info.Find( "; ", loc1);可能会把b后的数也放到a一起的
可以:
1.循环查找A,找到一个A,则查找下一个‘;’的位置,并提取其中的数据部分(并加上‘,’),连接到abuf后。
2.分别对A,B,C,。。。,F,查找
3.再分别对abuf,bbuf,。。。,fbuf进行字符分离,用strtok函数,以‘,’分离符号。

[解决办法]
我帮你做了修改 看看吧
int loc1 = 2;
int loc2 = 0;
int cc = Info.Replace( ", ", ", ");
loc2=Info.Find( ", ", loc1+1) != -1 ? Info.Find( ", ", loc1) : Info.Find( "; ", loc1);
for(int i = 0; i <= cc; i++)
{
buf[i] = Info.Mid(loc1, loc2 - loc1);
loc1 = loc2+1;
loc2 = Info.Find( ", ", loc1+1) != -1 ? Info.Find( ", ", loc1) : Info.Find( "; ", loc1);
}

读书人网 >VC/MFC

热点推荐