我正在使用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/

10-13 08:18