关于字符串分割C++,AfxExtractSubString,_tcstok

第一种:
AfxExtractSubString,该函数在MSDN文档中没有说明,但在分割字符串时很有用,当然也可用Find自己去写。

函数原型:

BOOL AfxExtractSubString(CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = '\n')

参数说明:

rString  保存输出的子字符串

lpszFullString  待分割的字符串

iSubString  提取的子字符串的序号,从0开始。假如你想提取第3段,该参数就输入2

chSep  用于分割的字符,默认的是'\n' 

返回值:分割成功,就返回TRUE;iSubString越界,则返回FALSE

举例说明:

CString str = _T("abc45,78ea,679u,368");

CString strSub;

AfxExtractSubString(strSub, (LPCTSTR)str, 0, ',');  // strSub的内容为abc45

AfxExtractSubString(strSub, (LPCTSTR)str, 3, ',');  // strSub的内容为368

注意:用于分割的只能是字符,不能是字符串。

第二种
一._tcstok函数 
  在MFC中,一个CString str="ab ac dd PM",怎么把他分开成ab和ac和dd和PM这四个字符串,类似string的split的功能?  
  _tcstok声明头文件: 
  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!3415F543A 07A7AE5!175.entry 
  也可以使用char *  __cdecl strtok(char *, const char *);(包含在头文件中) 
  参考:http://baike.baidu.com/view/1028553.htm 

或者自己写个分割函数实现split的功能, 
第三种: 
一个这样的字符串:“123,456,789,0”。把他截取成这样的字符串数组 [123],[456],[789],[0]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boat99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值