VC中字符串取子串总结_第1页
VC中字符串取子串总结_第2页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1/ 4 一。前言 程序中经常会遇到要处理用某些符号(如空格,或 “, ; . |t ”等)分隔的字符 串的问题,我在此做了一些总结和比较。 二。处理方法 1. 用 MFC CString 之 Find 处理字符串 /以下方法将一个字符串分解后放到一个 CStringArray 中: void ExtractString(CStringArray& arr, const CString strSrc, const CString sep = rn ) / 预处理: 可根据需要决定是否需要 Trim,以及是 Trim 掉空格/还是分隔符/还是其它 CString str(strSrc);

2、 str.TrimLeft(); str.TrimRight(); if(str.IsEmpty() return; / 开始分解 int pos = str.Find(sep); while (pos != -1)/if(!str.Left(pos).IsEmpty() / 如有必要也可在此 Trim 后再判 断是否为空,为空则舍弃 arr.Add(str.Left(pos); str = str.Mid(pos + sep.GetLength(); pos = str.Find(sep);arr.Add(str); / think / BTW,CString 提供了 TrimLeft 和

3、TrimRight,却不能一次 TrimAll,并返回 Trim 后的字符串,我写了一个: CString TrimAll(CString str, CString strTrim = )str.TrimLeft(strTrim); 2/ 4 str.TrimRight(strTrim); return CString(str);/ 同样是用 Find 处理字符串,和以上处理方式稍有不 同,试比较: void ExtractString2(CStringArray& arr, const CString strSrc, const CString sep = rn ) CString

4、str(strSrc); if(TrimAll(str).IsEmpty() return; / 开始分解 int pos = str.Find(sep); if(pos = -1) / 未找到分隔符 arr.Add(str); else /找到分隔符 str += sep; / think CString s; while (pos != -1)s = str.Left(pos); if(!TrimAll(s).IsEmpty() arr.Add(s); str = str.Mid(pos + sep.GetLength(); pos = str.Find(sep); 2. 用 MFC 未公

5、开函数 AfxExtractSubString 处理 / 以下为函数定义及说明: / AfxExtractSubString 从一个字符(chSep分隔的字符串(IpszFullString中取出 第 iSubString 个子串,输出到 rString BOOL AFXAPI AfxExtractSubString ( 3/ 4 CString& rString, /用于输出子串 LPCTSTR lpszFullStri ng,被分隔的字符串 int iSubString, / zero-based substring index TCHAR chSep = n /分/ 隔符)/ e

6、g: CString sDesc= 张 三| 男|28| 医生; CString sOccupation; if(AfxExtractSubString ( sOccupation, sDesc, 3, |) cout 职业: sOccupation endl; 3. 用 C 语言之 strtok 函数处理 #include void test()char* str = 244|5049|193|NBGW1|040C|0017|8;char seps = ,;|; char* temp = (char*)malloc(sizeof(char) * (strlen(str)+1); strcpy

7、(temp, str); char* token = strtok(temp, seps); while (NULL != token)printf(%st, token); token = strtok(NULL, seps);free(temp); 4. 其它方法 当然既然能用 MFC 的 Find 函数进行处理,也可能 string 的 find 处理,甚至 可用最原始的字符比较,再配合一些字串处理函数进行处理。 但我觉得我提供的使用 Find 类函数处理字串的2种方法非常常用,可供参 考。 三。比较 4/ 4 处理方法优劣仅限于 MFC 中使用,且未公开;一般用于取其中某个子串。 用 MFC CString 之 Find 处理字分隔符可是是字符或字串; 符串在 MFC 中是最常用的方法。 完全封装,调用简单; 用 AfxExtractSubString 处理 分隔符可是是字符或字串。 用 C 语言之 strtok 函数处理 四。后记分隔符只能是字符;分隔符可以同时指定多个字符,可用于分隔

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论