BSTR到std :: string(std :: wstring),反之亦然
在C ++中使用COM时,字符串通常是BSTR数据类型。有人可以使用BSTR包装纸CComBSTR或MS的包装纸CString。但是因为我不能在MinGW编译器中使用ATL或MFC,是否有标准代码片段可以转换BSTR为std::string(或std::wstring),反之亦然? 是否还有一些非MS包装BSTR类似于CComBSTR? 更新资料 感谢所有以任何方式帮助我的人!仅仅因为没有人解决过BSTR和之间的转换问题std::string,所以我想在此提供一些实现方法的线索。 以下是我用来分别转换BSTR为std::string和的函数:std::stringBSTR std::string ConvertBSTRToMBS(BSTR bstr) { int wslen = ::SysStringLen(bstr); return ConvertWCSToMBS((wchar_t*)bstr, wslen); } std::string ConvertWCSToMBS(const wchar_t* pstr, long wslen) { int len = ::WideCharToMultiByte(CP_ACP, 0, pstr, wslen, NULL, 0, NULL, NULL); std::string dblstr(len, '\0'); len = ::WideCharToMultiByte(CP_ACP, 0 /* no flags */, pstr, wslen /* …