一个简单方便的ANSI和UNICODE互转方法

来源:互联网 发布:京瓷1800扫描软件 编辑:程序博客网 时间:2024/05/16 11:20

最近多次使用_bstr_t这个封装BSTR类,发现微软封装得还挺不错的,能很简单方便的ANSI和UNICODE互转。

VC6.0默认是没添加_bstr_t 类的支持头文件comdef.h,还需要用#include <comdef.h>添加头文件。

为什么能这样用呢?我们来看看_bstr_t的等号操作符

_bstr_t重载了const char*和const wchar_t*等号操作符,就是说可以用这两种类型的变量直接给_bstr_t对象赋值。

注:_bstr_t的构造函数也做了类似的重载,具体参考MSDN

我们再来看_bstr_t提取等号操作符

这就是说我们可以把_bstr_t当成const wchar_t*和const char*来使用,所以就出现了上面的示例代码。

提取等号操作符的时候请注意:这些操作符可用于提取封装的Unicode或多字节BSTR对象的原始指针。操作符返回实际的内部缓冲区的指针,这样生成的字符串不能被修改。

故需要修改该字符串的时候最好是把数据用

_tcscpy

strcpy

_mbscpy

wcscpy

拷贝的别的地方再处理,或者是放在CString中处理。

 

总的来说_bstr_t感觉就是一个超级强悍的”TEXT“或者”_T“转换。

 

写完后搜了下,也找到篇和这个思路一样的文章《字符串转换:wchar_t MultiByteToWideChar Unicode等》。

 

原创粉丝点击