这里总结了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#语言常用的字符串处理函数,如字符串比较,字符串查找,字符串插入,字符串删除,字符串替换,字符串截取,字符串连接,字符串与数组间转换等操作
window平台下编程会遇到各种字符串数据类型转化,这里有个总结,看看就知道了。
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...
String类型表示由0或多个16位Unicode字符组成的字符序列,即字符串。ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串(此过程...
主要介绍了总结的7个shell字符串操作方法和实例分享,包括长度获取、查找位置、字符截取、匹配查询等,需要的朋友可以参考下
1)利用eval可以将字典格式的字符串与字典户转 》》》mstr = ‘{“name”:”yct”,”age”:10}’ 转换为可以用的字典: 》》》eval(mstr), type( eval(mstr) ) {"name":"yct","age":10}, dict 2)....
在C#中,要将一个字符串或浮点数转换为整数,基本上有三种方法:(1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32(string)(3)使用int.Parse(string)或int.TryParse(string,out int) 在实际使用时,...
C++中字符串与整型浮点型间的转换或者与其他类型之间的转换是我们经常遇到的问题,本人总结了一下网上的资源,与大家分享一下
一、其它数据类型转换为字符串 15 二、从其它包含字符串的变量中获取指向该字符串的指针 16 三、字符串转换为其它数据类型 16 四、其它数据类型转换到CString 16 五、BSTR、_bstr_t与CComBSTR 16 六、VARIANT 、_...
今天小编就为大家分享一篇对Java字符串与整形、浮点类型之间的相互转换方法总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = “123”; a = Number(a); 注意: a) 如果转换的内容本身就是一个数值类型的字符...
C++必知必会.pdf,不错的C++编程资料。内容概述:C++类型转换总结,将其它格式转换为字符串,将字符串转换成字符串,VARIANT 的类型总结,标准C++垃圾回收机制,C++异常机制,指针与引用
主要介绍了C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法,本文总结了Convert.ToDateTime(string)、Convert.ToDateTime(string, IFormatProvider)、DateTime.ParseExact()三种方法,需要的朋友可以参考...
连接字符串常用: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-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型相关操作技巧,需要的朋友可以参考下
1、C字符串、字符、字符数组等数据转换 2、MFC字符串、字符、字符数组等数据转换 3、Qt字符串、字符、字符数组等数据转换
编码转换总结 gbk转unicode base64 des md5 crc校验 输入的字符串转换成各种类型 vc 源码
字符串三.格式化字符串四.布尔值和空值五.类型检查及转换 一.数值 在Python数值分成了三种: 整数、浮点数(小数)、复数 1.int类型 在Python中所有的整数都是int类型,无大小限制,可以是一个无限大的整数 注意: ...
1、将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80’ 2、将varchar 转为Int 用 cast(a as signed) a为varchar类型的字符串 总结:类型转换和SQL Server一样,就是类型参数有点点不同 : ...
• 4.2 字符串的常用操作 • 1) 判断类型 • 2) 查找和替换 • 3) 大小写转换 • 4) 文本对齐 • 5) 去除空白字符 • 6) 拆分和连接 • 4.3 字符串的切片 • 4.4 字符串的格式化输出 • 5. 公共方法 • 5.1 Python ...