Существует ли буферизованная версия CComBSTR, которая делает конкатенацию строк более эффективной?
-
02-07-2019 - |
Вопрос
У меня есть несколько проектов, в которых мне нужно добавить строки к объекту BSTR/CComBSTR/_bstr_t (например.построение динамического оператора SQL).Есть ли в WinAPI готовый тип для буферизации конкатенации (например, StringBuilder в .NET) или мне придется написать свой собственный?Насколько я знаю о методах добавления, они выполняют перераспределение.
Решение
Скопируйте BSTR в CString, внесите все изменения, а затем скопируйте его обратно в BSTR/CComBSTR.Выделение CString происходит быстрее, чем SysAllocStringLen.
Другие советы
Вы должны написать свой собственный.Вы можете использовать API-интерфейсы SysAllocStringLen или SysReallocString для получения буферов разного размера.Они работают с входной строкой, но вы можете передать NULL, чтобы выделить неинициализированный буфер фиксированного размера.