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.分隔只能使用字符,不能使用字符串。