C++实现CString和string的互相转换.doc_第1页
C++实现CString和string的互相转换.doc_第2页
C++实现CString和string的互相转换.doc_第3页
全文预览已结束

下载本文档

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

文档简介

C+实现CString和string的互相转换2008年11月01日 转到评论 发表评论在C+里经常遇到到转换字符串的情况,有时很棘手。网上搜寻,找到此篇,非常不错,分享下CString-std:string 例子:CString strMfc=“test“;std:string strStl;strStl=strMfc.GetBuffer(0);std:string-CString 例子:CString strMfc;std:string strStl=“test“;strMfc=strStl.c_str();AfxExtractSubString是截取字符串的函数,很好用,不过美中不足的地方在与它只能使用单个字符作为分割符。但是这种情况在很多时候都行不通,如果分割符需要是两个字符以上呢?之前因为这个问题试了很久,也在网上搜索过。不过可惜的是,网上的大部分关于VC截取字符串的文章都是那么同样的几篇,都是写的满复杂然后可以实现了AfxExtractSubString功能而已的,也就是只能用单个字符截取,但是标题却写着用字符串截取字符串,好笑!不找了,自己写吧。CString里面有Find,然后再组成数组。void Split(CString source, CStringArray& dest, CString division)dest.RemoveAll();int pos = 0;int pre_pos = 0;while( -1 != pos )pre_pos = pos;pos = source.Find(division,(pos+1);dest.Add(source.Mid(pre_pos,(pos-pre_pos);CString source是需要截取的原字符串,CStringArray& dest 是最终结果的数组CString division 是用来做分割符的字符串备忘:为了适用于Unicode环境,要养成使用_T()宏的习惯1、格式化字符串CString s;s.Format(_T(The num is %d.), i);2、转为 int转10进制最好用_ttoi(),它在 ANSI 编码系统中被编译成_atoi(),而在 Unicode 编码系统中编译成_wtoi()。用_tcstoul()或者_tcstol()可以把字符串转化成任意进制的(无符号/有符号)长整数。CString hex = _T(FAB);CString decimal = _T(4011);ASSERT(_tcstoul(hex, 0, 16) = _ttoi(decimal);3、转为 char *3.1 强制类型转换为 LPCTSTR,不能修改字符串LPCTSTR p = s; 或者直接 (LPCTSTR)s;3.2 使用 GetBuffer 方法不给 GetBuffer 传递参数时它使用默认值 0,意思是:“给我这个字符串的指针,我保证不加长它”。假设你想增加字符串的长度,就必须将你需要的字符空间大小(注意:是字符而不是字节,因为 CString 是以隐含方式感知 Unicode 的)传给它。当调用 ReleaseBuffer 时,字符串的实际长度会被重新计算,然后存入 CString 对象中。必须强调一点,在 GetBuffer 和 ReleaseBuffer 之间这个范围,一定不能使用你要操作的这个缓冲的 CString 对象的任何方法。因为 ReleaseBuffer 被调用之前,该 CString 对象的完整性得不到保障。LPTSTR p = s.GetBuffer();/ do something with pint m = s.GetLength(); / 可能出错!s.ReleaseBuffer();int n = s.GetLength(); / 保证正确4、其他4.1 分割字符串AfxExtractSubString(CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = n);CString csFullString(_T(abcd-efg-hijk-lmn);CString csTemp;AfxExtractSubString(csTemp, (LPCTSTR)csFullString, 0, -); / 得到 abcdAfxExtractSubString(csTemp, (LPCTSTR)csFullString, 1, -); / 得到 efgAfxExtractSubString(csTemp, (LPCTSTR)csFullString, 2, -); / 得到 hijkAfxExtractSubString(csTemp, (LPCTSTR)cs

温馨提示

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

评论

0/150

提交评论