如何将wstring转换为LPOLESTR?

Nav*_*een 3 wstring

以下是我尝试过的,但没有用.

std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());
Run Code Online (Sandbox Code Playgroud)

请任何一个人说什么是更好的方法?

小智 8

LPOLESTR是一个OLECHAR基本上是一串wchar_t.因此LPOLESTR是空终止的wchar_t*.LPOLESTRtypedef由Microsoft创建的.这些是Microsoft在MFC 4.0之前使用并自此放弃的自动ANSI/Unicode转换方案的痕迹.对于Win32开发,"OLE"对应于Unicode.例如,在Win32开发中,a OLECHAR只是a wchar_t而a LPOLESTR是宽字符串(例如wchar_t*).

要从wstring一个wchar_t字符数组构建它是直截了当的 -

wchar_t* Array = L"Hello";
std::wstring strArray(Array);
Run Code Online (Sandbox Code Playgroud)

要将另一个方向从wstring转换为wchar_t*,你可以这样做 -

wstring wstr = L"Test wstring";
const wchar_t *pwstr = wstr.c_str();
Run Code Online (Sandbox Code Playgroud)

你也可以尝试这个,

LPOLESTR tempString = W2OLE((wchar_t*)wstring_temp.c_str());
Run Code Online (Sandbox Code Playgroud)