vc ++ - 如何将CString转换为LPCWSTR

pra*_*ran 5 c++ mfc visual-c++

我试图这样做,但我没有找到任何方法.我问这个是因为我是Windows的新手.我试过stl-strings,但是visual studio 2008-在stl-wstring-handling中积累了bug.在其他问题上,我稍后会对此事说很多.现在有人可以解释这个问题吗?

Inv*_*rse 8

最简单的方法是使用 MFC 字符串转换宏,定义在:

https://docs.microsoft.com/en-us/cpp/atl/reference/string-conversion-macros?view=msvc-160

例如,要转换CString为的宏LPCWSTRCT2W(s).

另一种方法是使用专业化CStringACStringW类。这些是相应的 ascii 和宽版本,CString具体取决于您是否使用该UNICODE标志进行编译。所以你可以使用:

CString your_string = "blah"
CStringW wide_string = your_string;
Run Code Online (Sandbox Code Playgroud)

获得宽版本的字符串。


Jör*_*son 6

像这样使用转换类CT2CW FuncTakingLPCWSTR(CT2CW(cstring_var)).这保证可以在Unicode或MBCS构建中使用.

另外,请记住传递给函数的字符串可能是临时的,因此请不要将其存储以供以后使用.


Dav*_*idK 5

这应该可以,假设您的应用程序尚未设置为 Unicode(如果是,则直接转换):

CString str("Hello, world!");
CStringW strw(str);
LPCWSTR ptr = strw;
Run Code Online (Sandbox Code Playgroud)