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
第一种方法:
实际上将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;