当前位置:首页 > 芯闻号 > 充电吧
[导读]这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语

这三种类型各有各的优点,比如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:程序员的生存发展和出路感觉越干越看不到未来,做技术的出路还是不知道在哪里--Andye2. Re:程序员的生存发展和出路写的很对,要成为一个帮人解问题,被人依赖的人--Andye3. Re:怎么修改chrome浏览器的字体Chrome字体设置:「Arial、Georgia、Arial、Consolas」或「Verdana、Georgia、Verdana、Consolas」「微软雅黑、华文宋体、微软雅黑、Consolas......--petercao4. Re:使用EasyBCD完美实现Windows7与Linux双系统在fedora25下,kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/deepin.iso ro quiet splash locale=z......--lunarcraft5. 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 * 就可以了 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭