用AfxExtractSubString()解析复合串

 MFC有几个未公开的函数很有用,AfxExtractSubString()就是其中之一。你在MSDN文档里是找不到关于这个函数的说明的,但是你如果研究过MSDN里的例子程序的话,就会发现很多代码中都使用了这个函数。它的功能简单说来就是从某个用NULL或者换行符"/n"分割的字符串中吸取子串。
这个函数非常很有用,用它可以从串表资源中的子串,还可以从Windows控件(如标准的"File Open"对话框)中解析出特定的字符串,如多选文件名等。
在MFC的AppWizard工程中一般都要创建一个名为IDR_MAINFRAME的串资源,它包含很多有用的信息,如应用程序名、文档类型的名字,或者默认文档类型的文件扩展名--专门用于"File Open/Save"对话框。下面是一个用AfxExtractSubString()解析信息串的例子:

   CString Fullstring, Appname, Fileext;
   Fullstring.LoadString(IDR_MAINFRAME);
    //获取完整的分割串
   AfxExtractSubString(Appname, Fullstring, 0, '/n');    
    //析出第一个子串
   AfxExtractSubString(Fileext, Fullstring, 4, '/n');    
    //析出第四个子串

使用这个函数可以避免因为自己写的解析代码而可能出现的错误。

 

CString str = "123,456,789";
CString output = "";
for (int i=0; i<3; i++)
{
AfxExtractSubString(output, str, i, ',');
AfxMessageBox(output);
}
参数1:用来存放你取出的子串
参数2:要拆分的整个字符串
参数3:你要取的子字符串位置,从0开始
参数4:特定字符

 

VC下的Split函数熟悉VB代码的朋友应该都极度喜欢Split函数,因为实在太方便了,自动帮你把字符串按照要求拆分,一直以为VC++没有相关的函数,今天重写看了一下VC++相关文章,发现一个没有在VC++文档公布的函数AfxExtractSubString,基本上与Split有异曲同工之效,就是不明白微软为什么把他隐藏起来了。。。 BOOL AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,int iSubString, TCHAR chSep = '/n') 参数说明: rString 得到的字符串;lpszFullString 待分割的字符串;iSubString 要得到第几个字符串;chSep 个子串之间的分隔符,默认是回车; 返回值为Flase表示iSubString 越界,否则分隔成功 例如,有一个字符串strFullString = "abcd-hgdy-weiuiwu-sdlsk";则有: CString strTmp; AfxExtractSubString( strTmp, (LPCTSTR)strFullString, 0, '-');//strTmp的内容为abcd AfxExtractSubString( strTmp, (LPCTSTR)strFullString, 2, '-');//strTmp的内容为weiuiwu 感觉蛮好用的,但是有两个限制: 1.仅仅能在MFC下使用的函数 2.分隔只能使用字符,不能使用字符串。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值