以下是我尝试过的,但没有奏效。
std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());
请任何人说什么是更好的方法?
以下是我尝试过的,但没有奏效。
std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());
请任何人说什么是更好的方法?
LPOLESTR
是一个字符串,OLECHAR
其中本质上是wchar_t
. LPOLESTR
空终止wchar_t*
的. LPOLESTR
是typedef
由微软创建的。这些是 Microsoft 在 MFC 4.0 之前使用的自动 ANSI / Unicode 转换方案的残余,此后已放弃。对于 Win32 开发,“OLE”对应 Unicode。例如,在Win32 开发中,anOLECHAR
只是a wchar_t
,而anLPOLESTR
是宽字符串(例如wchar_t*
)。
wstring
要从字符数组构造wchar_t
它是直截了当的 -
wchar_t* Array = L"Hello";
std::wstring strArray(Array);
要将另一个方向从 wstring 转换为 wchar_t*,您可以这样做 -
wstring wstr = L"Test wstring";
const wchar_t *pwstr = wstr.c_str();
你也可以试试这个
LPOLESTR tempString = W2OLE((wchar_t*)wstring_temp.c_str());
您根本不需要转换,只需复制字符串:
std::wstring str = L"Text";
LPOLESTR lpDesc = (LPOLESTR) new wchar_t[str.length() + 1];
strcpy(lpDesc, str.c_str());
delete[] lpDesc;