【问题标题】:Is there a buffered version of CComBSTR that makes string concatenation more efficient?是否有 CComBSTR 的缓冲版本可以使字符串连接更有效?
【发布时间】:2010-09-13 11:40:36
【问题描述】:

我有几个项目需要将字符串附加到 BSTR/CComBSTR/_bstr_t 对象(例如构建动态 SQL 语句)。 WinAPI 中是否有开箱即用的类型来缓冲连接(如 .NET 中的 StringBuilder),还是我必须自己编写?根据我对附加方法的了解,它们执行重新分配。

【问题讨论】:

    标签: string winapi concatenation


    【解决方案1】:

    将 BSTR 复制到 CString 中,在那里进行所有修改,然后将其复制回 BSTR/CComBSTR。 CString 的分配速度比 SysAllocStringLen 快。

    【讨论】:

    • 但是 CString 处理嵌入式 NUL 的方式与 BSTR 相同吗?
    • 是的。 CString 可以很好地处理 NULL。
    【解决方案2】:

    你必须自己写。您可以使用 SysAllocStringLen 或 SysReallocString API 来获取不同大小的缓冲区。它们作用于输入字符串,但您可以传递 NULL 来分配固定大小、未初始化的缓冲区。

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 2018-08-16
      • 1970-01-01
      • 2019-07-05
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多