我现在有一串从文本读出的CString strtmp="[0]xx,0,dwon,stop,line,,ok,[1]yy,1,up,go,rect,,ok,[2]zz,3,left,stop,round,,ok,[3]??,2,right,go,line,,no,";
还有一很多个将要方这些东西的数组CString a[],b[],c[],d[],e[],f[],g[],h[]
现在需要把从文本读到的字符串以","和"["分割开分别放到这8个数组中,比如
a[]={[0],[1],[2],[3]};
b[]={xx,yy,zz,??};
c[]={0,1,3,2};
后面依次类推,请会做的大大写一下详细代码,最好有注释,谢谢咯
还有一很多个将要方这些东西的数组CString a[],b[],c[],d[],e[],f[],g[],h[]
现在需要把从文本读到的字符串以","和"["分割开分别放到这8个数组中,比如
a[]={[0],[1],[2],[3]};
b[]={xx,yy,zz,??};
c[]={0,1,3,2};
后面依次类推,请会做的大大写一下详细代码,最好有注释,谢谢咯
void Split(CStringArray* csa,TCHAR tSplitChar,CString csFullString)
{
CString csSplit;
csa->RemoveAll();
for(int i = 0; AfxExtractSubString(csSplit, csFullString, i, tSplitChar); i++)
csa->Add(csSplit);
}
再逐条按逗号拆分。比较简单。你也可以从左到右,逐字符处理
简单的做法是换行分隔
[code=INIFile]
[0]xx,0,dwon,stop,line,,ok,
[1]yy,1,up,go,rect,,ok,
[2]zz,3,left,stop,round,,ok,
[3]??,2,right,go,line,,no,
[/code]
科学的做法是XML<Content>
<add key="0" v1="xx" v2="0" v3="dwon" v4="stop" v5="line" v6="" v7="ok"/>
<add key="1" v1="yy" v2="1" v3="up" v4="go" v5="rect" v6="" v7="ok"/>
</Content>时尚的做法用json{data:
[
{key:0, v1:'xx', v2:0, v3:'down', v4:'stop', v5:'line', v6=, v7='ok'},
{key:1, v1:'yy', v2:1, v3:'up', v4:'go', v5:'rect', v6=, v7='ok'},
]
}
int ai_Index, /*分隔符序号*/
char ai_Char, /*分隔符*/
char *azp_TargetStr /*目标串指针*/
)
{
int li_Index1,li_Index2=0,li_StrLen;
int li_Flag = 0;
azp_TargetStr[0] = 0;
li_StrLen = strlen( azp_SourceStr );
if ( ai_Index < 0 || li_StrLen == 0 )
{ /*返回空串*/
return( azp_TargetStr );
}
for ( li_Index1 = 0; li_Index1 < li_StrLen; li_Index1++ )
{
if (azp_SourceStr[ li_Index1 ] == 0x0A)
{
break;
}
/* 分隔符的索引序号为0的情况,或者是通过查找找到了要取值字段左边的分隔符号,
来取从这个字段最左边的这个分隔符号到这个字段最右边的分隔符号之间的字符串 */
if ( ai_Index == 0 && azp_SourceStr[ li_Index1 ] != ai_Char )
{
azp_TargetStr[ li_Index2++ ] = azp_SourceStr[ li_Index1 ];
}
/* 定位要取值字段的最左边的这个分隔符号 */
if ( azp_SourceStr[ li_Index1 ] == ai_Char )
{
ai_Index--;
}
if ( ai_Index < 0 )
{
break;
}
}
azp_TargetStr[ li_Index2 ] = 0;
return( azp_TargetStr );
}
在把你要得到的字符,放到你想要放的数组中就行了,这个就不用我写了吧,呵呵