如何将wstring转换为LPOLESTR?

时间:2011-07-13 16:46:01

标签: wstring

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

std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());

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

2 个答案:

答案 0 :(得分:8)

LPOLESTROLECHAR的字符串,基本上是wchar_t。因此LPOLESTR是以空值终止的wchar_t*LPOLESTR是由Microsoft创建的typedef。这些是Microsoft在MFC 4.0之前使用并自此放弃的自动ANSI / Unicode转换方案的痕迹。对于Win32开发,“OLE”对应于Unicode。例如,在Win32开发中,OLECHAR只是wchar_tLPOLESTR是宽字符串(例如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());

答案 1 :(得分:1)

根本不需要转换,只需复制字符串:

std::wstring str = L"Text";
LPOLESTR lpDesc = (LPOLESTR) new wchar_t[str.length() + 1];
strcpy(lpDesc, str.c_str());
delete[] lpDesc;