CString strAAA;
int len=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,strAAA,-1,NULL,0);
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,strAAA,-1,Buf,len);
第三个参数报错:
 不能从  'const char * ' 转化为 'class CString '
CString 怎样转化为 const char * ,我是_unicode 

解决方案 »

  1.   

    CString::GetBuffer(), CString::ReleaseBuffer()
      

  2.   

    CString str = "A string here" ;
    LPWSTR lpszW = new WCHAR[255];LPTSTR lpStr = str.GetBuffer( str.GetLength() );
    int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL);
    MultiByteToWideChar(CP_ACP, 0, lpStr, -1, lpszW, nLen);
    AFunctionUsesWCHAR( lpszW );
    delete[] lpszW;
      

  3.   

    如何将CString类型的变量赋给char*类型的变量
    1、GetBuffer函数:
    使用CString::GetBuffer函数。
    char *p;
    CString str="hello";
    p=str.GetBuffer(str.GetLength());
    str.ReleaseBuffer();将CString转换成char * 时
    CString str("aaaaaaa");
    strcpy(str.GetBuffer(10),"aa");
    str.ReleaseBuffer();
    当我们需要字符数组时调用GetBuffer(int n),其中n为我们需要的字符数组的长度.使用完成后一定要马上调用ReleaseBuffer();
    还有很重要的一点就是,在能使用const char *的地方,就不要使用char *2、memcpy:
    CString mCS=_T("cxl");
    char mch[20];
    memcpy(mch,mCS,20);3、用LPCTSTR强制转换: 尽量不使用
    char *ch;
    CString str;
    ch=(LPSTR)(LPCTSTR)str;CString str = "good";
    char *tmp;
    sprintf(tmp,"%s",(LPTSTR)(LPCTSTR)str);4、
    CString Msg;
    Msg=Msg+"abc";
    LPTSTR lpsz;
    lpsz = new TCHAR[Msg.GetLength()+1];
    _tcscpy(lpsz, Msg);
    char * psz;
    strcpy(psz,lpsz);
    CString类向const char *转换
    char a[100];
    CString str("aaaaaa");
    strncpy(a,(LPCTSTR)str,sizeof(a));
    或者如下:
    strncpy(a,str,sizeof(a));
    以上两种用法都是正确地. 因为strncpy的第二个参数类型为const char *.所以编译器会自动将CString类转换成const char *.CString转LPCTSTR (const char *)
    CString cStr;
    const char *lpctStr=(LPCTSTR)cStr;LPCTSTR转CString
    LPCTSTR lpctStr;
    CString cStr=lpctStr;将char*类型的变量赋给CString型的变量
    可以直接赋值,如:
    CString myString = "This is a test";
    也可以利用构造函数,如:
    CString s1("Tom");将CString类型的变量赋给char []类型(字符串)的变量
    1、sprintf()函数
    CString str = "good";
    char tmp[200] ;
    sprintf(tmp, "%s",(LPCSTR)str);  
    (LPCSTR)str这种强制转换相当于(LPTSTR)(LPCTSTR)str
    CString类的变量需要转换为(char*)的时,使用(LPTSTR)(LPCTSTR)str然而,LPCTSTR是const char *,也就是说,得到的字符串是不可写的!将其强制转换成LPTSTR去掉const,是极为危险的!
    一不留神就会完蛋!要得到char *,应该用GetBuffer()或GetBufferSetLength(),用完后再调用ReleaseBuffer()。2、strcpy()函数
    CString str;
    char c[256];
    strcpy(c, str);char mychar[1024];
    CString source="Hello";
    strcpy((char*)&mychar,(LPCTSTR)source); 
      

  4.   

    原因:
      CString  用法不对MultiByteToWideChar 最方便的使用方法是用 _bstr_t
      

  5.   

    都不好用啊
    我的的是_UNICODE,UNICODE
      

  6.   

    已经是UNICODE,没有必要转换。