打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CString const char*与char*之间的转换关系
userphoto

2013.01.04

关注
CString是个好东西,有很多好用的成员函数,并且动态分配内存空间。但在MFC学习初期,容易把CString与const char*,char*混淆。遇到三种类型数据转换时,总是得过且过。下面就剖析一下三者之间的转换关系与方法。
 
1、CString与const char*(LPCTSTR---是在Unicode环境下const char*的宏定义)
 
CString类提供一个const char*()把CString类型转换为LPCTSTR类型。
比如AfxMessageBox()的使用,可以采用:
char szMessageText[] = "Unknown error";
AfxMessageBox(szMessageText);
也可以这样:
CString strMessageText("Unknown ;error");
AfxMessageBox(strMessageText);
 
CString类也提供了一个构造函式把LPCTSTR类型转换为CString类型。比如:
CString strTruth;
strTruth += " is alive";
 
2、CString与char*
调用CString::GetBuffer在Buffer中开辟一定大小的空间并返回一个char*。注意要在使用完char*后要调用CString::ReleaseBuffer以此保证CString的动态性。例如:
CString strTest("test");strncpy(strTest.GetBuffer(5), "T", 1);strTest.ReleaseBuffer();ASSERT(strTest == "Test");
编写以字符串为参数的函数所遵循的规则:
a、如果函数不改写字符串的内容并且要调用C Runtime的函数,那么函数要用const char*类型参数;
b、如果函数不改写字符串的内容并且要调用CString的成员函数,那么函数要用const CString&类型参数;
c、如果函数要改写字符串的内容,那么函数要用CString&类型参数。

本文出自 “听春流” 博客,请务必保留此出处http://yanghao.blog.51cto.com/357234/71226

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
string,CString,char*之间的转化
CString参数用于const void*的理解
CString, int, string, char*之间的转换_C语言教程_C++教程_...
VC中format用法 各种转换方式 int 转 CString char* 转 int
VC常用数据类型使用转换详解
vc字符串转换处理:(绝对精华,收集所有的例子)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服