2010-09-06 14 views
14

Quelqu'un sait comment convertir BSTR en caractère *? Mise à jour: J'ai essayé de le faire, mais je ne sais pas si c'est vrai ou faux.Convertir BSTR en caractère *

char *p= _com_util::ConvertBSTRToString(URL->bstrVal); 
strcpy(testDest,p); 

Répondre

18

Votre code est correct. ConvertBSTRToString fait juste cela. Comme pour le strcpy, doit être assez grand pour contenir la chaîne pointée par p. Notez que puisque ConvertBSTRToString alloue une nouvelle chaîne, vous devrez la libérer quelque part sur la ligne. Une fois que vous avez terminé assurez-vous faire:

delete[] p; 

Quelques mises en garde quoique (comme vous pouvez le voir BSTR documentation on MSDN):

  • sur Microsoft Windows, se compose d'une chaîne de caractères Unicode (large ou caractères à deux octets).
  • Peut contenir plusieurs caractères null incorporés.

Ainsi, votre strcpyne peut pas travailler toujours comme prévu.