c++ - 将 BSTR 复制到 char[1024]?

标签 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 并忽略其余部分)。每次 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/

上一篇:C++ 编码虚拟机

下一篇:C++设计模式建议

相关文章:

c++ - OpenGL:从许多帧缓冲区纹理中读取稀疏像素数据的有效方法?

java - 从 "messy"Java 字符串中提取多种数据类型

visual-studio - 为什么 VS2010 调试器不会在我的断点处停止?

python - 将 numpy 加载到 IronPython 中

ruby - 根据连续字符的运行将字符串拆分为数组

c++ - 在Visual Studio中将64位 double 转换为字节数组形式的80位 double

C++:打印 map 值

c++ - Eclipse CDT C++ 错误

c++ - 如何使用 Cmake 在 Linux 上设置 MKL

python - 限制 Python 中的数字位数