600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > CString string char*之间的转换(转)

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

时间:2024-04-14 20:52:55

相关推荐

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

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 @-07-03 04:03petercao阅读(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 +加关注日一二三四五六301234567891011121314151617181920212223242526272829303112345678910

搜索

常用链接

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

随笔分类

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)

随笔档案

5月 (7)4月 (22)3月 (15)2月 (11)1月 (15)12月 (12)11月 (3)10月 (13)9月 (27)8月 (20)7月 (13)5月 (1)4月 (9)3月 (1)11月 (1)10月 (10)9月 (1)8月 (5)6月 (1)5月 (1)4月 (2)3月 (2)2月 (1)1月 (2)12月 (1)10月 (3)9月 (1)7月 (3)6月 (2)5月 (30)4月 (47)3月 (10)2月 (1)1月 (11)12月 (3)11月 (5)10月 (4)9月 (33)8月 (16)7月 (17)6月 (6)5月 (21)4月 (12)3月 (15)1月 (1)12月 (3)11月 (2)10月 (13)9月 (20)8月 (14)7月 (8)6月 (2)5月 (14)4月 (10)3月 (8)1月 (2)12月 (7)11月 (5)10月 (4)9月 (4)8月 (15)7月 (11)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 © 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 @-07-03 04:03petercao阅读(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 +加关注日一二三四五六301234567891011121314151617181920212223242526272829303112345678910

搜索

常用链接

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

随笔分类

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)

随笔档案

5月 (7)4月 (22)3月 (15)2月 (11)1月 (15)12月 (12)11月 (3)10月 (13)9月 (27)8月 (20)7月 (13)5月 (1)4月 (9)3月 (1)11月 (1)10月 (10)9月 (1)8月 (5)6月 (1)5月 (1)4月 (2)3月 (2)2月 (1)1月 (2)12月 (1)10月 (3)9月 (1)7月 (3)6月 (2)5月 (30)4月 (47)3月 (10)2月 (1)1月 (11)12月 (3)11月 (5)10月 (4)9月 (33)8月 (16)7月 (17)6月 (6)5月 (21)4月 (12)3月 (15)1月 (1)12月 (3)11月 (2)10月 (13)9月 (20)8月 (14)7月 (8)6月 (2)5月 (14)4月 (10)3月 (8)1月 (2)12月 (7)11月 (5)10月 (4)9月 (4)8月 (15)7月 (11)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 © petercao

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。