¿Existe una versión de CComBSTR en búfer que haga que la concatenación de cadenas sea más eficiente?
-
02-07-2019 - |
Pregunta
Tengo varios proyectos en los que necesito agregar cadenas a un objeto BSTR / CComBSTR / _bstr_t (por ejemplo, construir una declaración de SQL dinámico). ¿Hay un tipo de lista para usar en el WinAPI para almacenar la concatenación (como StringBuilder en .NET), o tengo que escribir el mío? Por lo que sé sobre los métodos de anexos, realizan la reasignación.
Solución
Copie el BSTR en un CString, realice todas las modificaciones allí y luego vuelva a copiarlo en el BSTR / CComBSTR. Las asignaciones de CString son más rápidas que SysAllocStringLen.
Otros consejos
Tienes que escribir el tuyo. Puede utilizar las API SysAllocStringLen o SysReallocString para obtener buffers de diferentes tamaños. Funcionan en una cadena de entrada, pero puede pasar NULL para asignar un búfer sin inicializar de tamaño fijo.