VS中关于字符集的问题

来源:互联网 发布:程序员面试宝典 pdf 编辑:程序博客网 时间:2024/06/05 11:36

VS2012以后版本中默认编码字符集为Unicode,LPSTR被LPCWSTR取代。几乎所有之前版本中形参类型为LPSTR的函数都被改成了形参类型为LPCWSTR,比如CreateWindow的第一和第二个形参。
所以在VS2012以后版本中应避免使用LPSTR而改成LPCWSTR。
另外,若是传入字符串常量必须使用TEXT()宏,否则会报错为类型不匹配。


LPSTR和LPWSTR是Win32VC++所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘\0’)结尾的32位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的64位双字节字符数组指针。CString与LPSTR转换。

'L'代表Long,'P'代表Pointer(指针),'STR'表示String。


1:CString转换成LPSTR

CString strFileName;LPSTR lpStr = (LPSTR)(LPCSTR)strFileName;


2:
LPSTR转换成CString
LPSTR lpStr = _T("TestStr");CString str(lpStr);
注意:CString和LPCSTR可直接转换,如下:
CString str;LPCSTR lpcStr = (LPCSTR)str;LPSTR在msdn中的定义
typedef LPSTR char * ;
由此可见,LPSTR实际数据类型就是字符指针。


0 0