Как преобразовать BSTR в std :: string в Visual Studio C ++ 2010?
Я работаю на COM DLL. Я хочу преобразовать BSTR в std :: string для передачи в метод, который принимает константный ссылочный параметр.
Кажется, что использование _com_util :: ConvertBSTRToString () для получения эквивалента BSTR в char * является подходящим способом сделать это. Однако документация по API немногочисленна, и реализация может содержать ошибки:
http://msdn.microsoft.com/en-us/library/ewezf1f6(v=vs.100).aspx http://www.codeproject.com/Articles/1969/BUG-in-_com_util-ConvertStringToBSTR-and-_com_util
Пример:
#include
#include
void Example(const std::string& Str) {}
int main()
{
BSTR BStr = SysAllocString("Test");
char* CharStr = _com_util::ConvertBSTRToString(BStr);
if(CharStr != NULL)
{
std::string StdStr(CharStr);
Example(StdStr);
delete[] CharStr;
}
SysFreeString(BStr);
}
Каковы плюсы и минусы альтернатив использованию ConvertBSTRToString (), предпочтительно на основе стандартных методов и классов?