这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。

以下我用简单的图示指出三者之间的关系,并以标号对应转换的方法。

1 string to CString

CString.format("%s",string.c_str());

2 CString to string

string str(CString.GetBuffer(str.GetLength()));

3 string to char *

char *p=string.c_str();

4 char * to string

string str(char*);

5 CString to char *

strcpy(char,CString,sizeof(char));

6 char * to CString

CString.format("%s",char*);

CString的format方法是非常好用的。string的c_str()也是非常常用的,但要注意和char *转换时,要把char定义成为const char*,这样是最安全的。

以上函数UNICODE编码也没问题:unicode下照用,加个_T()宏就行了,像这样子_T("%s")

补充:

CString 可能是 CStringW/CStringA,在与 string 转换时,如果是 CStringW,还涉及编码转换问题。下面以 CStringA 来说明。

1 string to CString

CString.format("%s",string.c_str());

CStringA = string.c_str() 就可以了

2 CString to string

string str(CString.GetBuffer(str.GetLength()));

GetBuffer 有参数的话,可能导致内部的分配空间动作,要进行后续 ReleaseBuffer 操作。

string = CStringA

string = CStringA.GetBuffer();

3 string to char *

char *p=string.c_str();

4 char * to string

string str(char*);

5 CString to char *

strcpy(char *,CString,sizeof(char));

按照 3 风格,这里应该 char *  = CStringA; 或者 char *p = CStringA.GetBuffer();

6 char * to CString

CStringA = char * 就可以了

CString,string,char*之间的转换相关推荐

  1. CString,string,char*之间的转换(转)

    Bluestorm's Space 博客园 首页 新随笔 联系 订阅 管理 随笔 - 588  文章 - 3  评论 - 137 CString,string,char*之间的转换(转) 这三种类型各 ...

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

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

  3. 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 ...

  4. CString,int,string,char*之间的转换

    <C++标准函数库>中说的   有三个函数可以将字符串的内容转换为字符数组和C-string   1.data(),返回没有"\0"的字符串数组   2,c_str() ...

  5. CString,int,string,char*之间的转换(转)

    ............................................................... <C++标准函数库>中说的   有三个函数可以将字符串的内容 ...

  6. MFCC中CString, int, string, char之间的转换

    1.    CString  -->  char* (1)传给未分配内存的指针 CString cstr ="ASDDSD"; char *ch =cstr.GetBuffe ...

  7. CString,string,char数组的转换

    虽然网上关于CString,string,char数组的转换的文章一大堆,但是感觉很乱很杂,而且许多并不能真正达到目的,在此,我把自己调试通过的转换方法贴到这里,做个笔记. 编译环境:vs2008, ...

  8. CString,string,char*,char[],GetBuffer(int)

    http://hi.baidu.com/luosiyong/item/df7a7e8f03f311d75e0ec10d char数组与指针的区别 测试代码如下: #include <window ...

  9. MFC中的CString.Format及CString,string,char*之间的转换

    1.CString.Format的使用:https://blog.csdn.net/wangkaishou/article/details/5846152 2.CString,string,char* ...

  10. VC之CString,wchar_t,int,string,char*之间的转换方法

    1. CString 转 wchar_t CString path = "asdf"; wchar_t wstr[256] = path.AllocSysString(); 或者: ...

最新文章

  1. 走向管理:建立工作汇报机制
  2. code ./打不开vscode编辑器
  3. 百度地图API : 自定义标注图标
  4. Spring快速开启计划任务
  5. 高能!这些段子已刷爆大学老师朋友圈
  6. IDEA Maven的下载和配置
  7. Oracle字符函数length substr concat实例
  8. 仿新浪新闻中异步替换关键字
  9. 使用SQL语句获得服务器名称和IP 地址
  10. CentOS 7 安装EOS 并启动钱包
  11. Oracle查询被锁表和解锁方法
  12. clickHouse 使用常见问题踩坑
  13. 技能分享 | 麦肯锡教给我的写作武器:连接词是文章通顺的灵魂
  14. 程序员做笔记的利器:MarkDown软件
  15. 类似qq的汉字拼音首字查询
  16. php 内网唤醒,手机微信实现网络唤醒电脑(WOL),远程开机,WakeOnLan
  17. 714. [C++]买卖股票的最佳时机含手续费
  18. 吉信通让短信发送更安全
  19. 2022年南京Java培训机构排名,实力突出遥遥领先
  20. Camera 面试总结

热门文章

  1. python内置数据类型列表_python数据类型内置方法 字符串和列表
  2. 网吧用服务器做虚拟化,刀片、无盘、集群、虚拟化,给你一个选择的理由(上)...
  3. python3下载url图片假死_利用Python 向FTP 上传图片,程序假死?
  4. vue展示日历 考勤展示_vue实现简单的日历效果
  5. python中33个保留字的含义_Python的保留字。这是什么意思?
  6. vue中数组按照下标移除其中一个_JDK 中的栈竟然是这样实现的?
  7. python字符串引用包_如何通过字符串形式导包(importlib模块的使用)
  8. iOS图形学(一):viewWillUnload和内存警告
  9. iOS多线程(一):GCD的基本使用
  10. LESS+to+MCSS