mfc 中文乱码转换为正常中文_MFC下遇到的字符集和中文乱码问题

MFC工程中的字符集问题,主要体现在字符串中包含中文时,CString与const char*的转换上,在此把自己遇到的问题及解决方法稍微记录一下,以便以后查阅。

首先说明一下 LPCTSTR 是什么东西。

1.LP 表示长指针,在win16下有长指针(LP)和短指针(P)的区别,而在win32下是没有区别的,都是32位.所以这里的LP和P是等价的.

2.C 表示const;

3.T 是什么东西呢,我们知道TCHAR在采用 UNICODE 方式编译时是wchar_t, 在普通时编译成char.

那么就可以看出 LPCTSTR(PCTSTR) 在UINCODE时是 const wchar_t * , 在多字节字符模式时是 const char * .

接下来我们看如何把CString转换成const char*.

(1)如果工程属性为Unicode, 问题就要简单的多,LPCTSTR就等于const char*, 在上面我们刚刚讲过,系统会在编译时自动判断。

CString转换成const char*则可以使用以下方法,通常情况下不会有问题:

CString cstring;

const char * constChar=(LPCTSTR)cstring;

或者可直接把CString变量赋值给const char* 和 LPCTSTR变量,MFC编绎器会自动地使用LPCTSTR把CString转换成const char*如:

CString str="hello,你好!";

AfxMessageBox(str);   //AfxMessageBox(LPCTSTR str,......) ;

test(str);                   //test(con

你可能感兴趣的:(mfc,中文乱码转换为正常中文)