2010-09-06 32 views
14

¿Alguien sabe cómo convertir BSTR a char *?Convierte BSTR a char *

Actualización: Intenté hacer esto, pero no sé si es correcto o incorrecto.

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

Respuesta

18

Tu código es correcto. ConvertBSTRToString hace precisamente eso. En cuanto a strcpy, debe ser lo suficientemente grande como para mantener la cadena apuntada por p. Tenga en cuenta que dado que ConvertBSTRToString asigna una nueva cadena, deberá liberarla en algún lugar de la línea. Una vez que haya terminado asegúrese de hacerlo:

delete[] p; 

Un par de advertencias, aunque (como se puede ver en BSTR documentation on MSDN):

  • En Microsoft Windows, se compone de una cadena de caracteres Unicode (ancho o caracteres de doble byte).
  • Puede contener múltiples caracteres nulos incorporados.

lo tanto, su strcpy puede no siempre funciona como se esperaba.