是否有CComBSTR的缓冲版本使字符串连接更有效?
时间:2020-03-06 14:47:17 来源:igfitidea点击:
我有几个项目需要将字符串添加到BSTR / CComBSTR / _bstr_t对象(例如,构建动态SQL语句)。 WinAPI中是否有现成的类型来缓冲连接(例如.NET中的StringBuilder),还是我必须编写自己的类型?据我对append方法的了解,它们执行重新分配。
解决方案
我们必须自己编写。我们可以使用SysAllocStringLen或者SysReallocString API来获取不同大小的缓冲区。它们在输入字符串上工作,但是我们可以传递NULL来分配固定大小的未初始化缓冲区。
将BSTR复制到CString,在那里进行所有修改,然后将其复制回到BSTR / CComBSTR。 CString的分配比SysAllocStringLen更快。