MFC拆分字符串

本文介绍了MFC中两种处理字符串的方法:使用_tcstok函数和AfxExtractSubString函数进行字符串分割的技术细节,并通过示例代码展示了如何实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一._tcstok函数
在MFC中,一个CString str=“ab ac dd PM”,怎么把他分开成ab和ac和dd和PM这四个字符串,类似string的split的功能?
_tcstok声明头文件:<TCHAR.H>
char* _tcstok( char* strToken, const char* strDelimit );

该函数是可以从一个CString串中,根据提供的分隔符,截取并返回一个一个的Token;
参数:
strToken: 是一个要分析的串;这个串中包含一个或者多个Token,当然还有分隔符,也有可
能有其他的字符;
strDelimit: 是分隔符;根据分隔符把strToken中的Token分析出来;
//==============test1:_tcstok===============

//将以空格符为分隔符对str进行分割
CString str = _T("192.168.89.125");

TCHAR seps[] = _T(".");

TCHAR* token = _tcstok( (LPTSTR)(LPCTSTR)str, seps );

while( token != NULL )

{

     printf("str=%s  token=%s/n",str,token);       

     token = _tcstok( NULL, seps );

}

//==============test1:end==================

执行结果如下:
str=192  token=192

str=192  token=168

str=192  token=89

str=192  token=125
第一次调用的时候,函数会忽略出现在strToken串开始的分隔符,返回找到的Token指针,用空字符(NULL character )替换掉已经查找到的部分(包括分隔符)并把“新”串保存到一个Static变量中(系统来完成);
如果下次调用时第一个参数为NULL的话,函数从Static变量中取出串,根据分隔符得到并返回新Token,用空字符(NULL character )替换掉已经查找到的部分(包括分隔符)并重新保存“新”串;如此循环,直到循环条件结束。
参考:http://biao3730.spaces.live.com/Blog/cns!3415F543A07A7AE5!175.entry

也可以使用char *  __cdecl strtok(char *, const char *);(包含在头文件<string.h>中)

参考:http://baike.baidu.com/view/1028553.htm

二.AfxExtractSubString函数
此外,用AfxExtractSubString函数可解析复合串。包含在头文件<AFXWIN.H>中。
BOOL AfxExtractSubString(CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep /* = */ )

参数:
rString:用来存放你取出的子串
lpszFullString:要拆分的整个字符串
iSubString:你要取的子字符串位置,从0开始
chSep:特定分割符
//========test2:AfxExtractSubString========

CString str = _T("192.168.89.125");

CString output = "";

for (int i=0; i<4; i++)

{

     AfxExtractSubString(output, str, i, '.');

     printf("%s/n",output);

}

//==============test2:end==================

执行结果如下:
192

168

89

125


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/everettjf/archive/2010/01/27/5260329.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值