1、缘由
最近在看多线程和多进程的操作,使用Windows线程操作API时总会遇到奇奇怪怪的宽字符类型,此文章将持续更新,写一写字符转换相关的内容。
2、LPWSTR赋值
通过转定义可以知道LPWSTR
是对WCHAR
的重定义:
typedef _Null_terminated_ WCHAR *NWPSTR, *LPWSTR, *PWSTR;
而WCHAR
的定义如下:
typedef wchar_t WCHAR; // wc, 16-bit UNICODE character
知道上述之后,自己动手,本想可以丰衣足食,惨遭失败…下述是本人的错误示范:
LPWSTR test1 = const_cast<WCHAR*>(L"mspaint.exe"); //尝试一 LPWSTR test2 = (LPWSTR)(LPCWSTR)L"mspaint.exe"; //尝试二
之后老老实实上网找博客,找到下述通过CString
作为中间人进行转化的方法,效果还OK。
CString test3 = L"mspaint.exe"; LPWSTR test4 = (LPWSTR)(LPCWSTR)test3;