hur.cn - 华软网

 热门搜索

error C2440: '=' : cannot convert from 'wchar_t *' to 'char *'

  作者:未知    来源:网络    更新时间:2011/7/14
char *m_cParityBits;
        
m_cParityBits = Ptemp.GetBuffer(Ptemp.GetLength());
Ptemp.ReleaseBuffer();
这是我的程序,我想把 CString Ptemp转换成char;运行时有错误,错误信息为:
error C2440: '=' : cannot convert from 'wchar_t *' to 'char *'
是何原因,请大家帮忙解决一下!谢谢!
---华软 网友回答---
那就强行转换

m_cParityBits = (char*)Ptemp.GetBuffer(Ptemp.GetLength());

---华软网友回复---
你用的是Unicode.
使用WideCharToMultiByte转换。
搜下,例子很多的。
---华软网友回复---
WideCharToMultiByte(CP_ACP, ...);
---华软网友回复---
W2A宏也可以
---华软网友回复---
不过在UNICODE环境下还是建议你用TCHAR替代char,要不用UNICODE就失去意义了
---华软网友回复---
坚决使用 WideCharToMultiByte
---华软网友回复---
这是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

}

---华软网友回复---
工程右键->属性-〉使用字符集-〉MBCS

或者使用TCHAR
---华软网友回复---
引用 8 楼 ynb119 的回复:
工程右键->属性-〉使用字符集-〉MBCS

或者使用TCHAR



参考这
---华软网友回复---
更改工程属性,自己的程序就不要默认用UNICODE了。。HOHO      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。