Question

Avez-vous des idées sur la façon de créer un BSTR à partir d’un LPCOLESTR? C'est idiot de se raccrocher au pied ..

Était-ce utile?

La solution

Un LPCOLESTR est simplement un const wchar_t * . Vous pouvez donc utiliser SysAllocString () pour créer un BSTR :

LPCOLESTR olestr = ...;
BSTR bstr = SysAllocString(olestr);

Assurez-vous d'appeler SysFreeString () . / a> lorsque vous avez terminé avec votre BSTR . Voir aussi la documentation MSDN sur BSTR s

Autres conseils

La différence entre BSTR et LPCOLESTR est que BSTR a la longueur de la chaîne préfixée avant la chaîne, ce que LPCOLESTR n'a pas.

Un BSTR n’a pas nécessairement une fin \ 0 marquant la fin de la chaîne, car la longueur de la chaîne est préfixée. Pour convertir, j’utilise habituellement la classe CComBSTR (atlcomcli.h), le ctor prend soit BSTR, soit LPCOLESTR. argument et il existe un membre BSTR () pour obtenir la représentation BSTR:

CComBSTR b( yourolestring )
// b.BSTR()

CComBSTR gérera l’allocation / libération, donc pas de risque de fuite de mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top