CString、string、char*之间的区别和转换


一、区别

CString和string均是字符串模板类。

CString为Visual C++中最常用的字符串类,主要应用在MFC和ATL编程中,安全性最高,但可移植性最差。

string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中,使用STL时必不可少的类型,所以是做工程时必须熟练掌握的。

char*为C编程中最常用的字符串指针,一般以'\0'为结束标志。

string是方便的,可以从几乎所有的字符串构造而来,包括CString和char*;
CString次之,可以从基本的一些字符串变量构造而来,包括char*等;
char*没有构造函数,仅可以赋值。

二、转换

2.1CString转换string、char*

CStringstring

CString result;

string str = (LPSTR)(LPCTSTR)result;

CString缓冲区的字符串采用的是UNICODE的占16位的字符,而string中的是占8位的ANSI标准字符。

有2个方法解决:
1、使用转换函数
char *chr=new char[wo.GetLength()]
WideCharToMultiByte(CP_ACP,0,wo.GetBuffer(),-1,chr,wo.GetLength(),NULL,NULL);
string str=chr;
2、推荐你使用string的宽字符版本wstring,它的成员函数和string几乎一模一样,你肯定会使用
wstring str=wo.GetLength();

CStringchar*

http://blog.sina.com.cn/s/blog_58e19ae7010003jt.html

CString m_Head;
char *codefile;
codefile=(LPSTR)(LPCTSTR)m_Head;

2.2string转CString char*

stringCString

CString cs(str.c_str());

stringchar*

方法1:

string str = "hello";

const char* cp= str.data();//char* cp = (char*)str.data();

方法2:

string str = "hello";

const char* cp= str.c_str();//char* cp = (char*)str.c_str();

ps:/*c_str()data()区别是:前者返回带'\0'的字符串,后者则返回不带'\0'的字符串*/

2.3 char*转CString string

char*CString

曲线转换:char*-> string -> CString

       char* ch = "hello";

       string str = ch;

       CString cstr(str.c_str());

char*string

char* cp = "hello";

string s = cp;

  

参考:

http://blog.sina.com.cn/s/blog_9017526301010r1i.html

http://www.cnblogs.com/bluestorm/p/3168720.html

http://dewei.iteye.com/blog/1566435

http://www.cnblogs.com/ziwuge/archive/2011/06/19/2084608.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值