char* 与 LPCTSTR 类型的互相转换

原文出自:http://www.cnblogs.com/tclikang/archive/2012/06/11/2544771.html

1.char* 转换成 LPCTSTR

char ch[1024] = "wo shi ni baba";
int num = MultiByteToWideChar(0,0,ch,-1,NULL,0);
wchar_t *wide = new wchar_t[num];
MultiByteToWideChar(0,0,ch,-1,wide,num);

 

解析:

num 获得长字节所需的空间

MultiByteToWideChar()表示将s中的字符传递到ps指向的内存中。-1表示传输至s中的'\0'处,num表示传递的字节个数。

 

2.LPCTSTR 转换成 char *

wchar_t widestr[1024] = L"wo shi ni yeye";
int num = WideCharToMultiByte(CP_OEMCP,NULL,widestr,-1,NULL,0,NULL,FALSE);
char *pchar = new char[num];
WideCharToMultiByte (CP_OEMCP,NULL,widestr,-1,pchar,num,NULL,FALSE);

3,  如何将char* 转换为LPCTSTR

源于:https://blog.csdn.net/xiaojun111111/article/details/45690241

第一种方法:

实际上将char*转换成CString对象就成了.

char*   p   =   "aaaa "; 
CString   s   =   p;//或 
CString   m(p); 
LPCTSTR   lp   =   (LPCTSTR)s;//   LPCTSTR   lp   =   (LPCTSTR)m; 

这两句都行。

第二种方法:

1>   char*转换成CString 

若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如: 
char   chArray[]   =   "This   is   a   test "; 
char   *   p   =   "This   is   a   test ";   
或 
LPSTR   p   =   "This   is   a   test ";   
或在已定义Unicode应的用程序中 
TCHAR   *   p   =   _T( "This   is   a   test ");   
或 
LPTSTR   p   =   _T( "This   is   a   test "); 
CString   theString   =   chArray; 
theString.Format(_T( "%s "),   chArray); 
theString   =   p;   

2> CString     to   LPCTSTR   
LPCTSTR   lpText; 
CString   str; 
str.Format( "%d ",a); 
lpText   =   (LPCTSTR)str;

4,  const char to LPCTSTR不能转化问题
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值