下面是我试过的一个,它不起作用。
std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());
请任何人说一说什么是更好的方法?
发布于 2011-07-14 00:54:17
LPOLESTR
是一个OLECHAR
字符串,它本质上是wchar_t
。所以LPOLESTR
是一个以null结尾的wchar_t*
。LPOLESTR
是微软公司开发的typedef
。这些是微软在MFC 4.0之前使用的自动ANSI / Unicode转换方案的残余,后来放弃了该方案。对于Win32开发,"OLE“对应于Unicode。例如,在Win32开发中,OLECHAR
只是一个wchar_t
,而LPOLESTR
是一个宽字符串(例如wchar_t*
)。
要从wchar_t
字符数组构造wstring
,它很简单-
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());
发布于 2011-07-14 00:49:24
您根本不需要转换,只需复制字符串:
std::wstring str = L"Text";
LPOLESTR lpDesc = (LPOLESTR) new wchar_t[str.length() + 1];
strcpy(lpDesc, str.c_str());
delete[] lpDesc;
https://stackoverflow.com/questions/6682508
复制相似问题