是否有 CComBSTR 的缓冲版本可以使字符串连接更有效?
Posted
技术标签:
【中文标题】是否有 CComBSTR 的缓冲版本可以使字符串连接更有效?【英文标题】:Is there a buffered version of CComBSTR that makes string concatenation more efficient? 【发布时间】:2010-09-13 11:40:36 【问题描述】:我有几个项目需要将字符串附加到 BSTR/CComBSTR/_bstr_t 对象(例如构建动态 SQL 语句)。 WinAPI 中是否有开箱即用的类型来缓冲连接(如 .NET 中的 StringBuilder),还是我必须自己编写?根据我对附加方法的了解,它们执行重新分配。
【问题讨论】:
【参考方案1】:将 BSTR 复制到 CString 中,在那里进行所有修改,然后将其复制回 BSTR/CComBSTR。 CString 的分配速度比 SysAllocStringLen 快。
【讨论】:
但是 CString 处理嵌入式 NUL 的方式与 BSTR 相同吗? 是的。 CString 可以很好地处理 NULL。【参考方案2】:你必须自己写。您可以使用 SysAllocStringLen 或 SysReallocString API 来获取不同大小的缓冲区。它们作用于输入字符串,但您可以传递 NULL 来分配固定大小、未初始化的缓冲区。
【讨论】:
以上是关于是否有 CComBSTR 的缓冲版本可以使字符串连接更有效?的主要内容,如果未能解决你的问题,请参考以下文章