size_t wcstombs(...)/* WCSTOMBS.C illustrates the behavior of the wcstombs function. */#include <stdio.h>
#include <stdlib.h>void main( void )
{
   int      i;
   char    *pmbbuf   = (char *)malloc( MB_CUR_MAX );
   wchar_t *pwchello = L"Hello, world.";   printf( "Convert wide-character string:\n" );
   i = wcstombs( pmbbuf, pwchello, MB_CUR_MAX );
   printf( "\tCharacters converted: %u\n", i );
   printf( "\tMultibyte character: %s\n\n", pmbbuf );
}
OutputConvert wide-character string:
   Characters converted: 1
   Multibyte character: H

解决方案 »

  1.   

    BSTR bstrName;// 赋值
    pField->get_Name(&bstrName);_bstr_t tmpbstr(bstrName, FALSE); //necessary to avoid a memory leak
    CString str = (const char*)(tmpbstr);别忘了给分!
      

  2.   

    如果是在ATL中:
         USES_CONVERSION;
         strcpy(charbuf,OLE2A(BSTRbuf);如果是一般的C/C++程序
    用WideCharToMultiBye();或者都用sprintf(charbuf,"%S",BSTRbuf);
      

  3.   

    参见
    http://www.csdn.net/expert/topic/231/231379.shtm
      

  4.   

    不管在哪里都用
    USES_CONVERSION;
        
    和OLE2T
      

  5.   

    我在程序中是声明了
    BSTR m_bstr和CString m_cstr
    用什么函数可直接把他们的值互付??
      

  6.   

    BSTR b1;
    _bstr_t b2(b1);
    CString s1=(char*)b2;先将BSTR类型放在_bstr_t中,然后用(char*)就可以把字符串析出来了!