目录
CString.format转格式乱码
vs2010 默认编码是unicode ,char定义的字符数组为ASCII编码,用Format之后就会造成乱码,应该用CStringW关键字进行转换
char str[]="hello";
CString s="";
s.Format("%s",CStringW(str));
MFC中CString和char*互转
1、Unicode 字符集下CString和char*互转
CString转char*:
使用WideCharToMultiByte()函数,该函数可以映射一个unicode字符串到一个多字节字符串。WideCharToMultiByte第四个参数为-1时,返回的长度值包含字符串终结符"\0",这样在第二次使用时就可以将“\0”也转换了
CString strTemp =_T("abc");
int length =WideCharToMultiByte(CP_ACP,0,strTemp,-1,NULL,0,NULL,NULL);
char* pTemp =new char[length];
WideCharToMultiByte(CP_ACP,0,strTemp,-1,pTemp,length,NULL,NULL);
char*转CString:
char* pTemp = "1234";
CString strTemp(pTemp);
2、多字节字符集下CString和char*互转
CString转char*:
//方式1
CString strTemp ="1234";
char *pTemp =(LPSTR)(LPCSTR)strTemp;
//方式2
CString strTemp ="1234";
char *pTemp = strTemp.GetBuffer(strTemp.GetLength());
strTemp.ReleaseBuffer();
char*转CString:
char* pTemp = "1234";
CString strOut(pTemp);