我正在使用IWebBrowser2和c ++在Web浏览器上工作。在顶部声明,在任何范围之外,我有这个:
static char buf[1024];
在documentcomplete事件中,我将BSTR设置为:
CComBSTR bstrHTMLText;
X->get_outerHTML(&bstrHTMLText);
我想做的是将bstrHTMLText值复制到buf中(如果bstrHTMLText长度大于1024,则只需填充buf并忽略其余部分)。每次文档完整的火灾。
我怎样才能做到这一点?
最佳答案
BSTR
秘密地是指向Unicode字符串的指针,在字符串数据的前面有一个隐藏的长度前缀。因此,您可以将其转换为wchar_t*
,然后将该宽字符字符串转换为ANSI字符串,例如使用WideCharToMultiByte
:
WideCharToMultiByte(CP_UTF8,
0,
bstrHTMLText.m_str,
SysStringLen(bstrHTMLText.m_str),
buf,
sizeof(buf),
NULL,
NULL);
关于c++ - 将BSTR复制到char [1024]吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3860719/