我正在使用 IWebBrowser2 使用 C++ 开发 Web 浏览器。在顶部声明,在任何范围之外,我有这个:
static char buf[1024];
在 documentcomplete 事件中,我将 BSTR 设置为:
CComBSTR bstrHTMLText;
X->get_outerHTML(&bstrHTMLText);
我想做的是将 bstrHTMLText 值复制到 buf 中(如果 bstrHTMLText 长度 > 1024,则只填充 buf 并忽略其余部分)。每次 documentcomplete 触发。
我该怎么做?
最佳答案
BSTR
secret 地是一个指向 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/