CString strTest = "aa-bb-cc.dd.ee,ff_55";
char a[10]={0}, b[10]={0}, c[10]={0}, d[10]={0}, e[10]={0}, f[10]={0}, g[10]={0};
_stscanf(strTest.GetBuffer(), "%[^-]-%[^-]-%[^.].%[^.].%[^,],%[^_]_%d", a, b, c , d, e, f, g);
用法说明:
[a-z]匹配a-z之间的任意字符,[ab,]匹配a、b、,、中的任意一个字符,
[^a]匹配非a的任意字符
解释:
第一段:%[^-]意思是:查找字符串"aa-bb-cc.dd.ee,ff_gg"中第一个非字符"-"的字符串,结果为“aa”
第二段:-%[^-]意思是:从字符“-”开始到非字符"-"结束,结果为bb
第三段:-%[^.]意思是:从字符“-”开始到非字符"."结束,结果为cc
第四段:.%[^.]意思是:从字符“.”开始到非字符"-"结束,结果为dd
第五段:.%[^,]意思是:从字符“.”开始到非字符","结束,结果为ee
第六段:,%[^_]意思是:从字符“,”开始到非字符"_"结束,结果为ff
第七段:_%d意思是:从字符“_”开始,后值为数字用%d,结果为55;如果后面为字符串用%s
格式化时间:
int nYear=0, nMonth=0, nDate=0, nHour=0, nMinute=0, nSecond=0;
CString strDateTime="2015-12-09 14:25:30"
_stscanf(strDateTime.GetBuffer(), "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMinute, &nSecond);