2010-03-21 5 views
0

Dans notre projet COM, nous devons choisir entre la meilleure implémentation de classe de chaînes de sorte que BSTR (utilisé pour les interfaces COM) et une classe de chaînes élégante comme CString fournissent de nombreuses API de manipulation de chaînes.ATL CString or_bstr_t?

Existe-t-il un meilleur moyen de gérer les chaînes et les opérations de chaîne de sorte qu'il puisse s'agir de plaintes BSTR et que nous ayons des opérations CString naïves?

Répondre

2

Malheureusement, rien de vraiment élégant ici. Le mieux que vous pouvez faire est d'utiliser CString::AllocSysString() et vous feriez mieux d'utiliser un wrapper BSTR comme CComBSTR ou _bstr_t pour gérer la durée de vie BSTR qui en résulte. Voir this question pour savoir comment cela se fait habituellement.

0

CString a la fonction AllocSysString: http://msdn.microsoft.com/en-us/library/za1865s1%28VS.80%29.aspx

Vous pouvez l'utiliser avant d'appeler les méthodes COM.

Vous pouvez utiliser _bstr_t :: Attach pour créer une instance _bstr_t à partir de l'appel CString :: AllocSysString, dans ce cas vous n'avez pas besoin de vous soucier de la version de BSTR.