如何将char*转换为const OLECHAR*以便在SYSALLOCSTRING()中使用
How to convert char * to const OLECHAR * so as to be used in SYSALLOCSTRING()?
请告诉我如何使用诸如SysAllocString()中的char*xyz,它将OLECHAR const*作为参数
根据char*
的编码方式,您有一些不同的选项:
-
是Windows所称的ANSI字符串,可以使用ATL和MFC字符串转换宏。
BSTR foo(const char* s) { return SysAllocString(CA2W(s)); // CA2W requires <atlconv.h> }
或者您可以使用
_bstr_t
:BSTR foo(const char* s) { return _bstr_t(s).Detach(); }
-
如果是UTF-8,则可以使用
MultiByteToWideChar
。
要将char*
转换为const OLECHAR*
,可以使用宏A2COLE
所以,如果你有一个"char*pChar",应该可以这样做:
const OLECHAR* pOleChar = A2COLE( pChar );
BSTR str = SysAllocString( pOleChar );
// do something with the 'str'
SysFreeString( str ); // need to cleanup the allocated BSTR
这就像wchar_t一样,所以您可以简单地调用函数:
SysAllocString(L"你好")
或者,如果您有char*,请使用mbstowcs_s将其转换为wchar_t。