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;
加载中,请稍侯......
精彩评论