2008-09-26 4 views
0

J'ai plusieurs projets où j'ai besoin d'ajouter des chaînes à un objet BSTR/CComBSTR/_bstr_t (par exemple, créer une instruction SQL dynamique). Existe-t-il un type out-of-the-box dans le WinAPI pour tamponner la concaténation (comme StringBuilder dans .NET), ou dois-je écrire le mien? D'après ce que je connais des méthodes d'ajout, ils effectuent une réallocation.Y at-il une version tamponnée de CComBSTR qui rend la concaténation de chaînes plus efficace?

Répondre

2

Copiez le BSTR dans un CString, faites-y toutes les modifications, puis copiez-le dans le BSTR/CComBSTR. Les allocations de CString sont plus rapides que SysAllocStringLen.

+0

Mais CString gère-t-il les NUL embarqués de la même manière que BSTR? – Constantin

+0

Oui. CString NULLs mainless très bien. –

2

Vous devez créer le vôtre. Vous pouvez utiliser les API SysAllocStringLen ou SysReallocString pour obtenir des tampons de tailles différentes. Ils fonctionnent sur une chaîne d'entrée, mais vous pouvez passer NULL pour allouer un tampon non initialisé de taille fixe.

Questions connexes