CString,char*,const char *,LPCTSTR 的转换

百度文库里找到的,一起整合过来。

 

如何将CString类型的变量赋给char*类型的变量 
1、GetBuffer函数: 
使用CString::GetBuffer函数。 char *p; 
CString str="hello"; 
p=str.GetBuffer(str.GetLength()); str.ReleaseBuffer(); 
将CString转换成char * 时 CString str("aaaaaaa"); strcpy(str.GetBuffer(10),"aa"); str.ReleaseBuffer(); 
当我们需要字符数组时调用GetBuffer(int n),其中n为我们需要的字符数组的长度.使用完成后一定要马上调用ReleaseBuffer(); 
还有很重要的一点就是,在能使用const char *的地方,就不要使用char * 


2、memcpy:  
CString mCS=_T("cxl"); char mch[20]; 
memcpy(mch,mCS,20); 

3、用LPCTSTR强制转换: 尽量不使用 char *ch; CString str; 
ch=(LPSTR)(LPCTSTR)str; 
CString str = "good"; char *tmp; 
sprintf(tmp,"%s",(LPTSTR)(LPCTSTR)str); 


4、 
CString Msg; Msg=Msg+"abc"; LPTSTR lpsz; 
lpsz = new TCHAR[Msg.GetLength()+1]; _tcscpy(lpsz, Msg); char * psz; strcpy(psz,lpsz); 
 
CString类向const char *转换 
char a[100]; 
CString str("aaaaaa"); 
strncpy(a,(LPCTSTR)str,sizeof(a)); 或者如下: 
strncpy(a,str,sizeof(a)); 
以上两种用法都是正确地. 因为strncpy的第二个参数类型为const char *.所以编译器会自动将CString类转换成const char *. 


CString转LPCTSTR (const char *) 
CString cStr; 
const char *lpctStr=(LPCTSTR)cStr; 
LPCTSTR转CString 
LPCTSTR lpctStr; CString cStr=lpctStr; 


将char*类型的变量赋给CString型的变量 
可以直接赋值,如:  
CString myString = "This is a test"; 也可以利用构造函数,如:  CString s1("Tom"); 


将CString类型的变量赋给char []类型(字符串)的变量 
1、sprintf()函数 
CString str = "good"; char tmp[200]  
sprintf(tmp, "%s",(LPCSTR)str);   
(LPCSTR)str这种强制转换相当于(LPTSTR)(LPCTSTR)str 
CString类的变量需要转换为(char*)的时,使用(LPTSTR)(LPCTSTR)str 
然而,LPCTSTR是const char *,也就是说,得到的字符串是不可写的!将其强制转换成LPTSTR去掉const,是极为危险的! 
一不留神就会完蛋!要得到char *,应该用GetBuffer()或GetBufferSetLength(),用完后再调用ReleaseBuffer()。 


2、strcpy()函数 

CString str; char c[256]; strcpy(c, str); 
char mychar[1024]; CString source="Hello"; 
strcpy((char*)&mychar,(LPCTSTR)source);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值