char *m_cParityBits;
        
m_cParityBits = Ptemp.GetBuffer(Ptemp.GetLength());
Ptemp.ReleaseBuffer();
这是我的程序,我想把 CString Ptemp转换成char;运行时有错误,错误信息为:
error C2440: '=' : cannot convert from 'wchar_t *' to 'char *'
是何原因,请大家帮忙解决一下!谢谢!

解决方案 »

  1.   

    那就强行转换m_cParityBits = (char*)Ptemp.GetBuffer(Ptemp.GetLength());
      

  2.   

    你用的是Unicode.
    使用WideCharToMultiByte转换。
    搜下,例子很多的。
      

  3.   

    WideCharToMultiByte(CP_ACP, ...);
      

  4.   

    不过在UNICODE环境下还是建议你用TCHAR替代char,要不用UNICODE就失去意义了
      

  5.   

    这是VS下默认UNICODE编码有关
    在VC6下没有问题,因为VC6默认是MBCS
    如果不想转换,直接设置字符集为MBCS即可
    否则可以这样
    void ConvertCStringToCharArray(CString &str,char *szContent)
    {
    #ifdef UNICODE
    int nlen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
    WideCharToMultiByte(CP_ACP, 0, str, -1, szContent, nlen, NULL, NULL);
    #else
    strcpy(szContent,str.GetBuffer(str.GetLength()));
    #endif}
      

  6.   

    工程右键->属性-〉使用字符集-〉MBCS或者使用TCHAR
      

  7.   

    更改工程属性,自己的程序就不要默认用UNICODE了。。HOHO