两个BSTR还有字符串怎么连接成一个LPCTSTR

解决方案 »

  1.   

    LPCSTR((CString)bstr_1 + (CString)bstr_2);
      

  2.   

    CString 与 BSTR 型转换CString 型转化成 BSTR 型当我们使用 ActiveX 控件编程时,经常需要用到将某个值表示成 BSTR 类型.BSTR 是一种记数字符串,Intel平台上的宽字符串(Unicode),并且可以包含嵌入的 NULL 字符。可以调用 CString 对象的 AllocSysString 方法将 CString 转化成 BSTR:CString str;str = .....; // whateverBSTR bStr = str.AllocSysString(); BSTR型转换为CString如果你在 UNICODE 模式下编译代码,你可以简单地写成:CString convert(BSTR bStr){    if(bStr == NULL)        return CString(_T(""));    CString s(bStr); // in UNICODE mode    return s;}如果是 ANSI 模式CString convert(BSTR b){    CString s;    if(b == NULL)       return s; // empty for NULL BSTR#ifdef UNICODE    s = b;#else    LPSTR p = s.GetBuffer(SysStringLen(b) + 1);     ::WideCharToMultiByte(CP_ACP,            // ANSI Code Page                          0,                 // no flags                          b,                 // source widechar string                          -1,                // assume NUL-terminated                          p,                 // target buffer                          SysStringLen(b)+1, // target buffer length                          NULL,              // use system default char                          NULL);             // don''t care if default used    s.ReleaseBuffer();#endif    return s;} 
      

  3.   

    BSTR s1, s2;
    // ....USES_CONVERSION;
    CString result = OLE2CT(s1);
    result += OLE2CT(s2);