开发者

How to convert wstring to LPOLESTR?

开发者 https://www.devze.com 2023-03-20 06:10 出处:网络
The below is the one that I have tried and it did not 开发者_如何学Cwork. std::wstring = L\"Text\";

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;
0

精彩评论

暂无评论...
验证码 换一张
取 消