前言

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

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"测试",2);
。。。
// 用完释放
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;

转载于:https://www.cnblogs.com/studynote/p/3956423.html

char*,wchar_t*,CString和BSTR之间的转换相关推荐

  1. CString 和 LPCTSTR 之间的转换 及 LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR的区分与转化

    欢迎大家有空可以看下我的http://ltdzhuwai.taobao.com 今天在写代码的时候碰到这样的问题,网上查了一下,做了以下整理: CString   和   LPCTSTR   可以说通 ...

  2. CSTRING与lpvoid之间的转换

    / //功能:将LPVOID类型的变量转换为CString类型 //参数:LPVOID类型的指针 //返回值:转换后的CString类型 // CString LpvToStr( const LPVO ...

  3. c++ cstring 转换 char_Java基本数据类型的介绍及其转换(内附字符串与多种数据之间的转换)...

    因为本篇文章长,所以先附上一个目录图片(ps:由于知乎不能设置目录所以只能先放一个图片了)如果觉得翻阅麻烦,可去小乔的CSDN查看. 一.Java的基本数据类型介绍 二.各类基本数据之间的转换 1.自 ...

  4. BSTR、char* 和 CString 之间的转换 (转)

    BSTR.char* 和 CString 之间的转换 (1) char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行.例如: c ...

  5. VC之CString,wchar_t,int,string,char*之间的转换

    VC之CString,wchar_t,int,string,char*之间的转换 1. CString 转 wchar_t CString path = "asdf"; wchar ...

  6. cstring转为string vc_VC之CString,wchar_t,int,string,char*之间的转换-阿里云开发者社区

    VC之CString,wchar_t,int,string,char*之间的转换 1. CString 转 wchar_t CString path = "asdf"; wchar ...

  7. BSTR、char*和CString转换

    原文: http://blog.csdn.net/zeuskaaba/article/details/4082826 (1) char*转换成CString 若将char*转换成CString,除了直 ...

  8. MFC中char*,string和CString之间的转换

    string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的: char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的.所以熟练掌握三者之间的转换十 ...

  9. 关于Char* ,CString ,WCHAR*之间的转换问题

    GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *.得益 ...

最新文章

  1. 既然 JVM 有 Full GC,为什么还会出现 OutOfMemoryError?
  2. android vlc eclipse,在Eclipse下导入vlc-android并编译
  3. legend3---Homestead中Laravel项目502 Bad Gateway
  4. 查看计算机CPU、内存使用情况
  5. [Java基础]体验Lambda表达式
  6. 自学嵌入式能找到工作吗_如何找到理想的嵌入式软件工作
  7. linux 用户管理和帮助命令
  8. SpringCloud大项目最快速的排查问题的思路
  9. android自动化必备之界面元素
  10. 微信小程序即时聊天前后端(TP5+Gateway)
  11. 计算机英语形成性考核册,开放英语1形成性考核册答案(中央广播电视大学外语部)doc...
  12. 心理学matlab入门书籍,零基础MATLAB和PSYCHTOOLBOX自学
  13. 新一配:程序员在地铁上写代码被路人吐槽:有什么好装的!网友评论炸锅了
  14. JAVA:货币金额类型、精确小数类型数值的定义BigDecimal和基本运算操作
  15. 设计模式之装饰器模式(C++)
  16. 芯片设计中的latch_为什么ICG Cell中使用锁存器(Latch),而不使用触发器(Flip Flop)?...
  17. 晕菜~~~竟然出了这样的事情~~
  18. Windows10系统蓝屏解决方案
  19. Chrome for Mac OS 的 快捷键
  20. 百度地图API详解之地图标注(一)

热门文章

  1. cf550D. Regular Bridge(构造)
  2. Kotlin——中级篇(二): 属性与字段详解
  3. Delphi 10.2.3发布
  4. Exchange安装过程中经常遇到的服务器需要重启问题
  5. cuid卡写入后锁死_CUID卡,CUID白卡,CUID门禁卡,CUID电梯卡,CUID可改写卡
  6. php输出多行多列,数据库查询记录php 多行多列显示
  7. 计算机硬件中英对照,计算机硬件名称中英文对照表
  8. Tomcat核心架构和启动流程解析
  9. mybatis批量更新及其效率问题
  10. java struts2国际化代码下载_【Java框架】java struts2框架中页面表示国际化的方法 - 思诚科技...