Насколько я знаю, это действительно легко, поскольку Microsoft предоставляет для этого :: char *.
Если у вас есть строка в объекте _bstr_t, просто выполните mysql_real_escape_string (your_object :: char *), что должно помочь.
Если это не помогло, вы также можете использовать strcncpy.
Вы можете сделать это так:
char xml[200];
_bstr_t the_xml_you_loaded;
strcncpy(xml,(char*)the_xml_you_loaded, sizeof(xml));
И последнее, но не менее важное: вы можете просто привести из _bstr_t к символу *:
char* xml = (char*)the_xml_you_loaded;
mysql_real_escape_string(xml);
Редактировать: (после комментариев)
Ник, всякий раз, когда вы используете "new", обязательно вызывайте delete в конце, чтобы избавиться от нежелательных ошибок памяти. Это не имеет ничего общего с вашей проблемой, это просто общий совет, которому вы должны следовать.
Для моего первого решения, поместите :: char * за объектом _bstr_t. например если это так:
_bstr_t xml;
Тогда сделайте это.
xml::char*
и использовать его в качестве параметра в строке mysql_real_escape.
И снова на кастинг, сделай так, как я написал, просто
char* somevar = (char*)xml;
и передайте его mysql_real_escape_string.
В следующий раз, когда что-то не скомпилируется, также опубликуйте сообщение об ошибке, а не только, что это не так.