将BSTR复制到char [1024]?

时间:2010-10-05 03:49:11

标签: c++ string visual-studio-2010 visual-c++

我正在使用IWebBrowser2使用c ++开发Web浏览器。声明在顶部,在任何范围之外,我有这个:

static char buf[1024];

在documentcomplete事件中,我将BSTR设置为:

CComBSTR bstrHTMLText;
X->get_outerHTML(&bstrHTMLText);

我想要做的是将bstrHTMLText值复制到buf中(如果bstrHTMLText长度> 1024则只填充buf并忽略其余部分)。每次文件完成时都会触发。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

BSTR秘密地是指向Unicode字符串的指针,隐藏长度前缀位于字符串数据的前面。因此,您可以将其强制转换为wchar_t*,然后将该宽字符字符串转换为ANSI字符串,例如使用WideCharToMultiByte

WideCharToMultiByte(CP_UTF8,
                    0, 
                    bstrHTMLText.m_str,
                    SysStringLen(bstrHTMLText.m_str),
                    buf,
                    sizeof(buf),
                    NULL,
                    NULL);