`
film
  • 浏览: 225713 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字符串类型转换总结

 
阅读更多

这里总结了BSTR, _bstr_t, CComBSTR, CString四种字符串类型之间的转换。其中BSTR为基本数据类型,另三个为字符串类。

首先声明四个类型的变量:

BSTR strBigBSTR = ::SysAllocString( _T( "BSTR" ));

_bstr_t strSmallBSTR( _T( “_bstr_t” )) ;

CComBSTR strCComBSTR( _T( “CComBSTR” ))

CString strCString( _T( “CString” ));

CComBSTR strTempCComBSTR( _T( “TempCComBSTR” ));

1. BSTR to Other Type

BSTR转换为其他类型非常方便,直接使用类的构造函数即可

// BSTR to _bstr_t

strSmallBSTR = _bstr_t( strBigBSTR );

// BSTR to CComBSTR

strCComBSTR = CComBSTR( strBigBSTR );

// BSTR to CString

strCString = CString( strBigBSTR );

2. _bstr_t to Other Type

基本思想是先把_bstr_t转化为TCHAR*, 再转化为其他类型。

// _bstr_t to BSTR

strTempCComBSTR = CComBSTR( static_cast<TCHAR*>( strSmallBSTR ));

strBigBSTR = strTempCComBSTR.m_str;

// _bstr_t to CComBSTR

strCComBSTR = CComBSTR( static_cast<TCHAR*>( strSmallBSTR ));

// _bstr_t to CString

strCString = CString( static_cast<TCHAR*>( strSmallBSTR ));

_bstr_t类重载了操作符char*和wchar_t*(TCHAR*的两种形式),所以这里并不是使用强制转换,而是调用了_bstr_t的函数。

3. CComBSTR to Other Type

基本思想是使用CComBSTR的公有成员变量m_str进行转换。

// CComBSTR to BSTR

strBigBSTR = strCComBSTR.m_str;

// CComBSTR to _bstr_t

strSmallBSTR = _bstr_t( strCComBSTR.m_str );

// CComBSTR to CString

strCString = CString( strCComBSTR.m_str );

4. CString to Other Type

基本思想是先把CString转化为LPCTSTR, 再转化为其他类型。

// CString to BSTR

strTempCComBSTR = CComBSTR( static_cast<LPCTSTR>( strCString ));

strBigBSTR = strTempCComBSTR.m_str;

// CString to _bstr_t

strSmallBSTR = _bstr_t( static_cast<LPCTSTR>( strCString ));

// CString to CComBSTR

strCComBSTR = CComBSTR( static_cast<LPCTSTR>( strCString ));

CString类重载了操作符LPCTSTR,所以这里并不是使用强制转换,而是调用了CString的函数。

5. 注意事项:

其他类型转化为BSTR类型时都使用的CComBSTR作为中转,因为这样不需要自己释放内存。但是要注意的是,转换后BSTR指向的是CComBSTR的内存,所以一旦CComBSTR被销毁了,BSTR也就失效了,这样会导致不可预知的错误。所以一定要保证CComBSTR大于或等于BSTR的周期。

下面用法是错误的:

strBigBSTR = CComBSTR(( LPCTSTR )strCString ).m_str;

因为CComBSTR在此条语句结束后就被析构了。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenwanming507507507/archive/2010/09/14/5884401.aspx

分享到:
评论

相关推荐

    C#字符串类型处理总结

    C#语言常用的字符串处理函数,如字符串比较,字符串查找,字符串插入,字符串删除,字符串替换,字符串截取,字符串连接,字符串与数组间转换等操作

    windows 字符数据类型,C++字符数据类型转化

    window平台下编程会遇到各种字符串数据类型转化,这里有个总结,看看就知道了。

    C++字符串完全指南.doc

    2.2. C语言字符串与类型定义 12 2.3. COM中的字符串 - BSTR 与 VARIANT 14 2.4. 字符串包装类 15 2.4.1. CRT类 _bstr_t 15 2.4.2. _variant_t 15 2.4.3. STL类 16 2.4.4. ATL类 CComBSTR 16 2.4.5. ATL类CComVariant...

    简单总结JavaScript中的String字符串类型

    String类型表示由0或多个16位Unicode字符组成的字符序列,即字符串。ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串(此过程...

    总结的7个shell字符串操作方法和实例分享

    主要介绍了总结的7个shell字符串操作方法和实例分享,包括长度获取、查找位置、字符截取、匹配查询等,需要的朋友可以参考下

    python 将字符串转换成字典dict的各种方式总结

    1)利用eval可以将字典格式的字符串与字典户转 》》》mstr = ‘{“name”:”yct”,”age”:10}’ 转换为可以用的字典: 》》》eval&#40;mstr&#41;, type( eval&#40;mstr&#41; ) {"name":"yct","age":10}, dict 2)....

    C#中将字符串转换为整型的三种解决方法总结

    在C#中,要将一个字符串或浮点数转换为整数,基本上有三种方法:(1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32(string)(3)使用int.Parse(string)或int.TryParse(string,out int) 在实际使用时,...

    C++中字符串与整型浮点型间的转换.

    C++中字符串与整型浮点型间的转换或者与其他类型之间的转换是我们经常遇到的问题,本人总结了一下网上的资源,与大家分享一下

    VC CString最全面的总结 常用数据类型使用转换详解等总结

    一、其它数据类型转换为字符串 15 二、从其它包含字符串的变量中获取指向该字符串的指针 16 三、字符串转换为其它数据类型 16 四、其它数据类型转换到CString 16 五、BSTR、_bstr_t与CComBSTR 16 六、VARIANT 、_...

    对Java字符串与整形、浮点类型之间的相互转换方法总结

    今天小编就为大家分享一篇对Java字符串与整形、浮点类型之间的相互转换方法总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    JavaScript中数据类型转换总结

    在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = “123”; a = Number(a); 注意: a) 如果转换的内容本身就是一个数值类型的字符...

    C++必知必会_c++类型转换_C++字符pdf_Vc_

    C++必知必会.pdf,不错的C++编程资料。内容概述:C++类型转换总结,将其它格式转换为字符串,将字符串转换成字符串,VARIANT 的类型总结,标准C++垃圾回收机制,C++异常机制,指针与引用

    C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法

    主要介绍了C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法,本文总结了Convert.ToDateTime(string)、Convert.ToDateTime(string, IFormatProvider)、DateTime.ParseExact()三种方法,需要的朋友可以参考...

    MySQL常用类型转换函数总结(推荐)

    连接字符串常用:concat函数。如sql查询条件的like查询, AND c.name like concat(#{param.name},’%’) 将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80’  2、Cast函数;CONVERT函数...

    Java实现Json字符串与Object对象相互转换的方式总结

    主要介绍了Java实现Json字符串与Object对象相互转换的方式,结合实例形式总结分析了java基于Json-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型相关操作技巧,需要的朋友可以参考下

    C/MFC/Qt数据间转换总结

    1、C字符串、字符、字符数组等数据转换 2、MFC字符串、字符、字符数组等数据转换 3、Qt字符串、字符、字符数组等数据转换

    编码转换总结 gbk转unicode base64 des md5 crc校验 vc 源码

    编码转换总结 gbk转unicode base64 des md5 crc校验 输入的字符串转换成各种类型 vc 源码

    Python常用数据类型总结

    字符串三.格式化字符串四.布尔值和空值五.类型检查及转换 一.数值 在Python数值分成了三种: 整数、浮点数(小数)、复数 1.int类型 在Python中所有的整数都是int类型,无大小限制,可以是一个无限大的整数 注意: ...

    Mysql 数字类型转换函数

    1、将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80’ 2、将varchar 转为Int 用 cast(a as signed) a为varchar类型的字符串 总结:类型转换和SQL Server一样,就是类型参数有点点不同 : ...

    Python常用数据结构和公共方法技巧总结

    • 4.2 字符串的常用操作 • 1) 判断类型 • 2) 查找和替换 • 3) 大小写转换 • 4) 文本对齐 • 5) 去除空白字符 • 6) 拆分和连接 • 4.3 字符串的切片 • 4.4 字符串的格式化输出 • 5. 公共方法 • 5.1 Python ...

Global site tag (gtag.js) - Google Analytics