std::string 转BSTR的方法

可以采用_com_util::ConvertStringToBSTR(str.c_str()); 这种方式进行从string(const char * )到BSTR的转换

这个函数_com_util::ConvertBSTRToString(vtFld.bstrVal); 可以用于将BSTR转换为const char *

若采用vtFld2.bstrVal = _bstr_t(str.c_str());这种方式进行转换,则当str长度大于0x3ffd(16381)时,会引发一个无法捕获的异常,从而导致程序崩溃.具体原因还需要以后仔细研究.

如下是转换的例子:

#include
#include
#include
#pragma comment(lib,"comsuppw")

using namespace std;

 

int _tmain(int argc, _TCHAR* argv[])
{
    string str("hello world!");//    string str(16382,'t');   
    _variant_t vtFld;
    vtFld.bstrVal = _com_util::ConvertStringToBSTR(str.c_str());

    string strOut = _com_util::ConvertBSTRToString(vtFld.bstrVal);

    cout<

    // 如下方式下,若str.size()>//0x3ffd(16381).则会引发一个无法捕获的异常.导致程序崩溃
    string str2(16382,'2');
    _variant_t vtFld2;
    vtFld2.vt = VT_BSTR;
    vtFld2.bstrVal = _bstr_t(str2.c_str());// !!!!!本例子中,此处将发生无法捕获的异常.导致程序崩溃!!!!!!
    string strOut2 = _com_util::ConvertBSTRToString(vtFld2.bstrVal); 
     cout<

    return 0;
}

你可能感兴趣的:(std::string 转BSTR的方法)