2010-09-06 23 views
14

Qualcuno sa come convertire BSTR in char *?Converti BSTR in char *

Aggiornamento: ho provato a farlo, ma non so se è giusto o sbagliato.

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

risposta

18

Il tuo codice è ok. ConvertBSTRToString fa proprio questo. Per quanto riguarda lo strcpy, deve essere abbastanza grande da contenere la stringa puntata da p. Si noti che poiché ConvertBSTRToString alloca una nuova stringa, sarà necessario liberarla da qualche parte lungo la linea. Una volta fatto assicurarsi che fare:

delete[] p; 

Un paio di avvertimenti anche se (come si può vedere da BSTR documentation on MSDN):

  • In Microsoft Windows, è costituito da una stringa di caratteri Unicode (wide o caratteri a doppio byte).
  • Può contenere più caratteri null incorporati.

Così, il vostro strcpynon può funzionare sempre come previsto.