The below is the one that I have tried and it did not 开发者_如何学Cwork.
std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());
Please any one cany say what is the better way to do?
LPOLESTR
is a string of OLECHAR
which is essentially wchar_t
. So LPOLESTR
is a null-terminated wchar_t*
. LPOLESTR
is a typedef
created by Microsoft. These are vestiges of an automatic ANSI / Unicode conversion scheme that Microsoft used prior to MFC 4.0 and has since abandoned. For Win32 development, "OLE" corresponds to Unicode. For example, in Win32 development, an OLECHAR
is simply a wchar_t
and an LPOLESTR
is a wide character string (e.g. wchar_t*
).
To construct wstring
from an array of wchar_t
characters it is straight forward -
wchar_t* Array = L"Hello";
std::wstring strArray(Array);
to convert the other direction from wstring to wchar_t*, you can do this -
wstring wstr = L"Test wstring";
const wchar_t *pwstr = wstr.c_str();
you can also try this,
LPOLESTR tempString = W2OLE((wchar_t*)wstring_temp.c_str());
You need no conversion at all, just copy the string:
std::wstring str = L"Text";
LPOLESTR lpDesc = (LPOLESTR) new wchar_t[str.length() + 1];
strcpy(lpDesc, str.c_str());
delete[] lpDesc;
精彩评论