前言

本文并不尝试列举出所有的转换方法,只列举作者认为方便易用的方法。

1.char*和wchar_t*的相互转换

可以利用中间类_bstr_t(头文件comdef.h)方便的进行相互转换

const wchar_t* wText = (_bstr_t)"测试";
char* cText = (_bstr_t)L"测试";

可以通过A2T,A2W,T2A,T2W等宏来进行转换

char* cText = "测试";
USES_CONVERSION;
wchar_t wText = A2W(cText);

其中USES_CONVERSION;用来初始化某些局部变量,至于为什么单独用一个宏来进行变量初始化,http://blog.csdn.net/wuji0447/article/details/4659001中进行了详细说明。

另外因为这些是宏,所以使用的时候要小心,见http://www.cnblogs.com/rainbowzc/archive/2009/09/07/1562168.html

2.char*转CString

注意:CString的内部实现与项目属性页的Charactor Set配置有关,所以其配置直接影响其与char*或wchar_t*相互转换的方式。

我们可以直接用char*构造CString来将char*转为CString。

在Charactor Set配置项not set的情况下,可以直接用char*构造CString或将char*赋值给CString。在Charactor Set配置项为UNICODE的情况下,可以将之转换为wchar_t*再赋值给CString。

3.CString转char*

在Charactor Set配置项not set的情况下,可以直接通过GetBuffer函数将CString转为char*

CString a("测试");
char* cText = a.GetBuffer();

需要注意的是如果我们对cText的内容进行了操作后要想再使用a,则需调用a.ReleaseBuffer()来释放缓存。

4.wchar_t*和CString的相互转换

参见2,3

5.char*, wchar_t*转BSTR

都可利用中间类_bstr_t来转

char* cText = "测试";
BSTR bstr1 = (_bstr_t)cText; wchar_t* wText = L"测试";
BSTR bstr2 = (_bstr_t)wText;

可使用SysAllocString等函数转。

BSTR bText1 = ::SysAllocString(L"测试");
BSTR bText2 = ::SysAllocStringLen(L"测试",);
。。。
// 用完释放
SysFreeString(bText1);
SysFreeString(bText2);

6.BSTR转char*, wchar_t*

都可利用中间类_bstr_t来转

7.CString转BSTR

CString a(L"测试");
BSTR bstr = a.AllocSysString();
SysFreeString(bstr); // 用完释放

8.BSTR转CString

BSTR可通过直接构造或赋值给CString来转换为CString

BSTR bstr = (_bstr_t)cText;
CString a = bstr;

char*,wchar_t*,CString和BSTR之间的转换的更多相关文章

  1. CString和CStringA之间的转换

    使用UNICODE字符集编程时,总是需要使用那些不支持UNICODE的库,例如sqlite3,Lua等必须使用char*类型的.这个时候用CStringA是最好的. 另外CStringA与CStrin ...

  2. VC中BSTR、Char*、CString和CComBSTR类型的转换

    原文:http://blog.csdn.net/wanghaihao_1/article/details/37498689 1.char*转换成CString 若将char*转换成CString,除了 ...

  3. char类型和int类型之间的转换

    在视屏课程第二章里,我们已经学习了一些常用的数据类型转换.然而,有一些时候我们会经常会遇到将char类型转换成int类型,或者需要将int类型转换为char类型的情况. 这里,我们来探讨一下这种不常用 ...

  4. wchar_t char string wstring 之间的转换

    wchar_t char string wstring 之间的转换 转:http://blog.csdn.net/lbd2008/article/details/8333583 在处理中文时有时需要进 ...

  5. 彻底搞定char/wchar_t/unicode

    彻底搞定char/wchar_t!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (2013-07-17 10:18:28) 转载▼     从char/wchar_t到TCHAR(1) ...

  6. C++中数字与字符串之间的转换(转)

    http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html 1.字符串数字之间的转换 (1)string --> char ...

  7. BSTR、char*和CString转换

    (1) char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行.例如: char chArray[] = "This  ...

  8. VC中BSTR、Char和CString类型的转换

    1.char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::format进行.例如: char chArray[] = "This is ...

  9. Char* ,CString ,WCHAR*之间的转换

    关于Char* ,CString ,WCHAR*之间的转换问题 GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用 ...

随机推荐

  1. wampserver环境下,安装ucenter1.6.0

    1,)从官网下载UCenter_1.6.0_SC_UTF8.zip,解压拷贝upload到www下,重命名upload->ucenter; 2,)D:\wamp\bin\apache\Apach ...

  2. 错过C++

    曾相识的C++--2008年那是还在学校,接触到了这门语言,可遗憾的是当时,自己没有能静下心好好学习这门语言.所以相识了了半年的c++就这样不见. 如今又相逢,但已经感觉到很陌生,陌生的我们互补相认.

  3. JMX超详细解读

    一.JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架.JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和 ...

  4. PostgreSQL9.2.4内核源码结构介绍

    PostgreSQL的源代码可以随意获得,其开源协议也允许研究者任意修改,这里介绍一下PostgreSQL的源码结构以及部分实现机制.下载PostgreSQL源代码并减压后,其一级目录结构如下图: P ...

  5. 夺命雷公狗---2016-linux---1之ip的配置

    在linux下输入以下命令即可配置成功, 但是前提是linux下的这个ip地址的ip段是通过本地ping出来的才可以,如下所示: 然后查看下是否配置成功: 已经配置成功了,那么下一步我们可以ping下 ...

  6. zw版【转发·台湾nvp系列Delphi例程】HALCON AddNoiseWhite

    zw版[转发·台湾nvp系列Delphi例程]HALCON AddNoiseWhite unit Unit1;interfaceuses Windows, Messages, SysUtils, Va ...

  7. 关于CentOS 7.1后期维护的问题

    1.问题描述:在使用ssh服务远程登录的时候,当显示输入密码,特别特别的慢,刚刚搭建 服务器的时候还很正常,经过一个假期我实在忍不了它了,故决定解决此问题.服务器系统:CentOS 7.1 解决方式: ...

  8. WCF入门教程:WCF基础知识问与答(转)

    学习WCF已有近两年的时间,其间又翻译了Juval的大作<Programming WCF Services>,我仍然觉得WCF还有更多的内容值得探索与挖掘.学得越多,反而越发觉得自己所知太 ...

  9. android小功能:checkbox使用自己的背景点击切换背景

    xiazai_checkbox.xml <?xml version="1.0" encoding="utf-8"?> <selector xm ...

  10. tmpfs

    什么是tmpfs tmpfs是Linux/Unix系统上的一种基于内存的文件系统.tmpfs可以使用您的内存或swap分区来存储文件.由此可见,temfs主要存储暂存的文件. linux内核中的VM子 ...