1)wstring 转BSTR
wstring str = L"";
BSTR bstr = (BSTR)(str.c_str());
2)wstring 转 CComBSTR
wstring str = L"";
CComBSTR pbstr;
CComBSTRpbstr(str.c_str())
3)CComBSTR 转 BSTR*
CComBSTR bstr;
BSTR* pbstr;
if(pbstr)
::SysFreeString(*pbstr);
bstr.CopyTo(pbstr) 或 pbstr= &bstr;
4)CComBSTR 转 wstring
wstring str = L"";
CComBSTR pbstr;
if(pbstr.ByteLength() > 0)
str = (BSTR)pbstr
5)BSTR* 转 wstring
BSTR* pstr;
CComBSTR(L"root").CopyTo(pstr);
if(pstr)
wstring str = (BSTR)(*pstr);
6)wstring 转 CString
wstring str;
CString cstr = str.c_str();
7)CString 转 wstring
CString cstr ;
wstring str = cstr.GetString();
8)wostringstream转 wstring
wostringstream os <<L"root";
wstring str = os.str();
9)解析xml串
wstring str = L"root";
XDOBuildersource(reinterpret_cast<const XMLByte*>((BSTR)(str.c_str())),
static_cast<XMLSize_t>(CComBSTR(str.c_str()).ByteLength()));
BSTR bstr =(BSTR)(str.c_str()) ;
XDOBuildersource(reinterpret_cast<const XMLByte*>(bstr),
static_cast<XMLSize_t>(CComBSTR(bstr).ByteLength()));
CComBSTR bstr = CComBSTR(str.c_str());
XDOBuildersource(reinterpret_cast<const XMLByte*>((BSTR)bstr),
static_cast<XMLSize_t>(bstr.ByteLength()));