Existe uma versão tamponada de CComBSTR que faz concatenação mais eficiente?
-
02-07-2019 - |
Pergunta
Eu tenho vários projetos em que eu preciso para anexar cordas para a / CComBSTR / object _bstr_t BSTR (por exemplo, a construção de uma instrução SQL dinâmica). Existe um tipo de out-of-the-box no WinAPI para tamponar a concatenação (como StringBuilder em .NET), ou tenho de escrever meu próprio? Pelo que eu sei sobre os métodos Acrescentar, eles realizam re-alocação.
Solução
Copie o BSTR em um CString, faça todas as modificações lá e então copiá-lo de volta para o BSTR / CComBSTR. alocações de CString são mais rápidos que SysAllocStringLen.
Outras dicas
Você tem que escrever o seu próprio. Você pode usar o SysAllocStringLen, ou APIs SysReallocString para obter diferentes tamanhos buffers. Eles trabalham em uma cadeia de entrada, mas você pode passar NULL para alocar um tamanho fixo, tampão uninitialised.