vc的split函数的实现
今天要用到一个split函数,过去在perl中很简单,可到网上查资料时发现关于vc的split的资料很少。后来久月提供了一个很好的函数strtok,利用这个函数稍加改进就可以是一个非常不错的split函数。唯一的缺点就是需要提前知道你需要分成多少份,这个对有些人用起来不是很方便。我把改进过的代码贴出来。
#include <string.h>
#include <stdio.h>
#include <stdio.h>
int main(void)
{
char input[16] = "中国,dai,wen";
char *p;
{
char input[16] = "中国,dai,wen";
char *p;
/* strtok places a NULL terminator
in front of the token, if found */
in front of the token, if found */
/* A second call to strtok using a NULL
as the first parameter returns a pointer
to the character following the token */
p = strtok(input, ",");
if (p) printf("%s/n", p);
for(int i=0;i<2;i++)
{
p = strtok(NULL, ",");
if (p) printf("%s/n", p);
}
return 0;
} 这就OK了。
as the first parameter returns a pointer
to the character following the token */
p = strtok(input, ",");
if (p) printf("%s/n", p);
for(int i=0;i<2;i++)
{
p = strtok(NULL, ",");
if (p) printf("%s/n", p);
}
return 0;
} 这就OK了。
正对上面提到的需要知道究竟不知道有多少个需要分开,可以使i的值很大,来确保都分开了。
另一个方法
CString strLine = "aaa,bbb,ccc,ddd";
CString strTemp;
int nCount=0;
char *ss=strLine.GetBufferSetLength(strLine.GetLength());
char *p;
for ( p=strtok(ss, ","); p!=NULL; p=strtok(NULL, ",") )
{
strTemp = p;
}
CString strTemp;
int nCount=0;
char *ss=strLine.GetBufferSetLength(strLine.GetLength());
char *p;
for ( p=strtok(ss, ","); p!=NULL; p=strtok(NULL, ",") )
{
strTemp = p;
}