Bluestorm's Space

  • 博客园
  • 首页
  • 新随笔
  • 联系
  • 订阅
  • 管理
随笔 - 588  文章 - 3  评论 - 137

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

这三种类型各有各的优点,比如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 * 就可以了

分类: C/C++,算法 / 数据结构
好文要顶 关注我 收藏该文  

petercao
关注 - 148
粉丝 - 406

+加关注

2
0

« 上一篇:C语言itoa()函数和atoi()函数详解(整数转字符C实现)
» 下一篇:简明Vim练级攻略(转)

posted @ 2013-07-03 04:03 petercao 阅读(41192) 评论(0) 编辑 收藏

刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。
最新IT新闻:
· 小米电视4正式宣布:LED/4K/无边框/超薄
· “Apple支持”应用更新:可预约“天才吧”售后维修
· 锤子联合YunOS:下半年发力
· 三星官方开箱Galaxy S8/S8+ 送AKG专业调音耳机
· Chrome 59 Beta发布 主要有三大新特性
» 更多新闻...
最新知识库文章:

· 唱吧DevOps的落地,微服务CI/CD的范本技术解读
· 程序员,如何从平庸走向理想?
· 我为什么鼓励工程师写blog
· 怎么轻松学习JavaScript
· 如何打好前端游击战

» 更多知识库文章...

公告

昵称:petercao
园龄:7年6个月
粉丝:406
关注:148

+加关注

< 2017年5月 >
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

搜索

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论
  • 我的标签

随笔分类

  • AI(1)
  • Android(276)
  • AR&VR(1)
  • C# & .NET(60)
  • C/C++(41)
  • Editor/IDE(9)
  • HTML5/WEB(19)
  • iOS(5)
  • Java / J2EE(114)
  • Linux(53)
  • Misc(39)
  • OS/操作系统(6)
  • Python(5)
  • 版本控制(16)
  • 编译原理/编程语言(7)
  • 嵌入式(7)
  • 软件工程 / UML建模(12)
  • 软件项目管理(1)
  • 设计模式(3)
  • 数据库(12)
  • 算法 / 数据结构(10)
  • 网络&软件架构(2)
  • 网络协议(10)
  • 云计算(4)
  • 职业生涯规划(9)

随笔档案

  • 2017年5月 (7)
  • 2017年4月 (22)
  • 2017年3月 (15)
  • 2017年2月 (11)
  • 2017年1月 (15)
  • 2016年12月 (12)
  • 2016年11月 (3)
  • 2016年10月 (13)
  • 2016年9月 (27)
  • 2016年8月 (20)
  • 2016年7月 (13)
  • 2016年5月 (1)
  • 2016年4月 (9)
  • 2016年3月 (1)
  • 2015年11月 (1)
  • 2015年10月 (10)
  • 2015年9月 (1)
  • 2015年8月 (5)
  • 2015年6月 (1)
  • 2015年5月 (1)
  • 2015年4月 (2)
  • 2015年3月 (2)
  • 2015年2月 (1)
  • 2015年1月 (2)
  • 2014年12月 (1)
  • 2014年10月 (3)
  • 2014年9月 (1)
  • 2014年7月 (3)
  • 2014年6月 (2)
  • 2014年5月 (30)
  • 2014年4月 (47)
  • 2014年3月 (10)
  • 2014年2月 (1)
  • 2014年1月 (11)
  • 2013年12月 (3)
  • 2013年11月 (5)
  • 2013年10月 (4)
  • 2013年9月 (33)
  • 2013年8月 (16)
  • 2013年7月 (17)
  • 2013年6月 (6)
  • 2013年5月 (21)
  • 2013年4月 (12)
  • 2013年3月 (15)
  • 2013年1月 (1)
  • 2012年12月 (3)
  • 2012年11月 (2)
  • 2012年10月 (13)
  • 2012年9月 (20)
  • 2012年8月 (14)
  • 2012年7月 (8)
  • 2012年6月 (2)
  • 2012年5月 (14)
  • 2012年4月 (10)
  • 2012年3月 (8)
  • 2012年1月 (2)
  • 2011年12月 (7)
  • 2011年11月 (5)
  • 2011年10月 (4)
  • 2011年9月 (4)
  • 2011年8月 (15)
  • 2011年7月 (11)
  • 2011年6月 (9)

文章分类

  • C/C++(1)

相册

  • MyPhoto

最新评论

  • 1. Re:程序员的生存发展和出路
  • 感觉越干越看不到未来,做技术的出路还是不知道在哪里
  • --Andye
  • 2. Re:程序员的生存发展和出路
  • 写的很对,要成为一个帮人解问题,被人依赖的人
  • --Andye
  • 3. Re:怎么修改chrome浏览器的字体
  • Chrome字体设置:「Arial、Georgia、Arial、Consolas」或「Verdana、Georgia、Verdana、Consolas」「微软雅黑、华文宋体、微软雅黑、Consolas......
  • --petercao
  • 4. Re:使用EasyBCD完美实现Windows7与Linux双系统
  • 在fedora25下,kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/deepin.iso ro quiet splash locale=z......
  • --lunarcraft
  • 5. Re:Android Studio 换主题 + 背景图片 + 去掉白色竖线
  • plugins:android code generatorandroid material design icon generatorandroid ndk supportandroid suppo......
  • --petercao

阅读排行榜

  • 1. java中重载与重写的区别(222258)
  • 2. px 与 dp, sp换算公式?(138534)
  • 3. IntelliJ IDEA 快捷键和设置(133316)
  • 4. 导入Eclipse工程 到 Android Studio(90684)
  • 5. C语言itoa()函数和atoi()函数详解(整数转字符C实现)(87148)

评论排行榜

  • 1. java中重载与重写的区别(17)
  • 2. java中equals方法的用法以及==的用法(转)(7)
  • 3. 大数据量分页查询方法(转)(7)
  • 4. Ubuntu 下载 & 编译 Android5.1 源码(7)
  • 5. C# 编写Windows Service(windows服务程序)(6)

推荐排行榜

  • 1. java中重载与重写的区别(27)
  • 2. IntelliJ IDEA 快捷键和设置(14)
  • 3. java中equals方法的用法以及==的用法(转)(12)
  • 4. Java中abstract class 和 interface 的解释和他们的异同点(转)(9)
  • 5. C# 编写Windows Service(windows服务程序)(8)

Copyright ©2017 petercao

Bluestorm's Space

  • 博客园
  • 首页
  • 新随笔
  • 联系
  • 订阅
  • 管理
随笔 - 588  文章 - 3  评论 - 137

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

这三种类型各有各的优点,比如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 * 就可以了

分类: C/C++,算法 / 数据结构
好文要顶 关注我 收藏该文  

petercao
关注 - 148
粉丝 - 406

+加关注

2
0

« 上一篇:C语言itoa()函数和atoi()函数详解(整数转字符C实现)
» 下一篇:简明Vim练级攻略(转)

posted @ 2013-07-03 04:03 petercao 阅读(41192) 评论(0) 编辑 收藏

刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。
最新IT新闻:
· 小米电视4正式宣布:LED/4K/无边框/超薄
· “Apple支持”应用更新:可预约“天才吧”售后维修
· 锤子联合YunOS:下半年发力
· 三星官方开箱Galaxy S8/S8+ 送AKG专业调音耳机
· Chrome 59 Beta发布 主要有三大新特性
» 更多新闻...
最新知识库文章:

· 唱吧DevOps的落地,微服务CI/CD的范本技术解读
· 程序员,如何从平庸走向理想?
· 我为什么鼓励工程师写blog
· 怎么轻松学习JavaScript
· 如何打好前端游击战

» 更多知识库文章...

公告

昵称:petercao
园龄:7年6个月
粉丝:406
关注:148

+加关注

< 2017年5月 >
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

搜索

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论
  • 我的标签

随笔分类

  • AI(1)
  • Android(276)
  • AR&VR(1)
  • C# & .NET(60)
  • C/C++(41)
  • Editor/IDE(9)
  • HTML5/WEB(19)
  • iOS(5)
  • Java / J2EE(114)
  • Linux(53)
  • Misc(39)
  • OS/操作系统(6)
  • Python(5)
  • 版本控制(16)
  • 编译原理/编程语言(7)
  • 嵌入式(7)
  • 软件工程 / UML建模(12)
  • 软件项目管理(1)
  • 设计模式(3)
  • 数据库(12)
  • 算法 / 数据结构(10)
  • 网络&软件架构(2)
  • 网络协议(10)
  • 云计算(4)
  • 职业生涯规划(9)

随笔档案

  • 2017年5月 (7)
  • 2017年4月 (22)
  • 2017年3月 (15)
  • 2017年2月 (11)
  • 2017年1月 (15)
  • 2016年12月 (12)
  • 2016年11月 (3)
  • 2016年10月 (13)
  • 2016年9月 (27)
  • 2016年8月 (20)
  • 2016年7月 (13)
  • 2016年5月 (1)
  • 2016年4月 (9)
  • 2016年3月 (1)
  • 2015年11月 (1)
  • 2015年10月 (10)
  • 2015年9月 (1)
  • 2015年8月 (5)
  • 2015年6月 (1)
  • 2015年5月 (1)
  • 2015年4月 (2)
  • 2015年3月 (2)
  • 2015年2月 (1)
  • 2015年1月 (2)
  • 2014年12月 (1)
  • 2014年10月 (3)
  • 2014年9月 (1)
  • 2014年7月 (3)
  • 2014年6月 (2)
  • 2014年5月 (30)
  • 2014年4月 (47)
  • 2014年3月 (10)
  • 2014年2月 (1)
  • 2014年1月 (11)
  • 2013年12月 (3)
  • 2013年11月 (5)
  • 2013年10月 (4)
  • 2013年9月 (33)
  • 2013年8月 (16)
  • 2013年7月 (17)
  • 2013年6月 (6)
  • 2013年5月 (21)
  • 2013年4月 (12)
  • 2013年3月 (15)
  • 2013年1月 (1)
  • 2012年12月 (3)
  • 2012年11月 (2)
  • 2012年10月 (13)
  • 2012年9月 (20)
  • 2012年8月 (14)
  • 2012年7月 (8)
  • 2012年6月 (2)
  • 2012年5月 (14)
  • 2012年4月 (10)
  • 2012年3月 (8)
  • 2012年1月 (2)
  • 2011年12月 (7)
  • 2011年11月 (5)
  • 2011年10月 (4)
  • 2011年9月 (4)
  • 2011年8月 (15)
  • 2011年7月 (11)
  • 2011年6月 (9)

文章分类

  • C/C++(1)

相册

  • MyPhoto

最新评论

  • 1. Re:程序员的生存发展和出路
  • 感觉越干越看不到未来,做技术的出路还是不知道在哪里
  • --Andye
  • 2. Re:程序员的生存发展和出路
  • 写的很对,要成为一个帮人解问题,被人依赖的人
  • --Andye
  • 3. Re:怎么修改chrome浏览器的字体
  • Chrome字体设置:「Arial、Georgia、Arial、Consolas」或「Verdana、Georgia、Verdana、Consolas」「微软雅黑、华文宋体、微软雅黑、Consolas......
  • --petercao
  • 4. Re:使用EasyBCD完美实现Windows7与Linux双系统
  • 在fedora25下,kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/deepin.iso ro quiet splash locale=z......
  • --lunarcraft
  • 5. Re:Android Studio 换主题 + 背景图片 + 去掉白色竖线
  • plugins:android code generatorandroid material design icon generatorandroid ndk supportandroid suppo......
  • --petercao

阅读排行榜

  • 1. java中重载与重写的区别(222258)
  • 2. px 与 dp, sp换算公式?(138534)
  • 3. IntelliJ IDEA 快捷键和设置(133316)
  • 4. 导入Eclipse工程 到 Android Studio(90684)
  • 5. C语言itoa()函数和atoi()函数详解(整数转字符C实现)(87148)

评论排行榜

  • 1. java中重载与重写的区别(17)
  • 2. java中equals方法的用法以及==的用法(转)(7)
  • 3. 大数据量分页查询方法(转)(7)
  • 4. Ubuntu 下载 & 编译 Android5.1 源码(7)
  • 5. C# 编写Windows Service(windows服务程序)(6)

推荐排行榜

  • 1. java中重载与重写的区别(27)
  • 2. IntelliJ IDEA 快捷键和设置(14)
  • 3. java中equals方法的用法以及==的用法(转)(12)
  • 4. Java中abstract class 和 interface 的解释和他们的异同点(转)(9)
  • 5. C# 编写Windows Service(windows服务程序)(8)

Copyright ©2017 petercao

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. [转载] Linux进程基础
  2. 字体大宝库:40套为网页设计师准备的时尚字体(下篇)
  3. python反编译难度_记录一次python3.7反编译过程
  4. idea配置Translation插件为有道翻译引擎
  5. 非线性优化中的KTT条件(知乎文章的理解)
  6. Java对PDF进行电子签章CA签名认证
  7. 双十一数码产品哪些值得买?双十一好物产品分享
  8. 怎样的年轻化法则,让这个品牌四年净利润复合增速达30%
  9. echarts 柱状图数值为0时 显示柱体
  10. 动态规划问题解决方法及示例
  11. HACKTHEBOX——Nibbles
  12. 缺陷检测中的分类、检测与分割网络
  13. backtrader股票技术指标自定义与量化回测
  14. C语言 数据结构 之 链式栈
  15. stdlib.h和stdio.h的区别
  16. egg html模板,egg(35,36)--egg实现项目的静态模板
  17. 2023新华为OD机试题 - 单词接龙(JavaScript) | 刷完必过
  18. 2020自考计算机应用技术,2020年8月自考02316计算机应用技术真题及答案
  19. 一只喵弹幕播放器开源无加无授权
  20. Office集成之Word模板的套打

热门文章

  1. 小米2019秋招系统软件开发笔试题详解
  2. BIM技术之Dynamo图元编程:体量族放样并导入revit
  3. linux列表中添加多个元素,这12种方法轻松合并Python中的列表
  4. 详解新浪微博登录第三方网站
  5. 扩展主机在过去5分钟内意外终止了3次,解决方法
  6. 虹软人脸识别中人脸追踪框框运动方向跟实际相反
  7. hdu 5708 Alice and Bob(尼姆博弈)
  8. 2021年通辽市高考成绩查询,2021年通辽高考状元名单公布,通辽文理科状元是谁多少分...
  9. mybatis控制台打印日志
  10. plupload插件使用