char[]与CString互转

       最近在学MFC,正好学到了Socket那里,就想自己编个聊天室(以后再做个纯文字的网游试试~~).但很快就发现,其实MFC的WinSocket封装的极其蛋疼~~比如,发送和接收的时候只能用void*(应该是指针型~一般就用char[]接收~),但众所周知的是,MFC的控件显示什么的还是用CString最方便~~~但问题就出在char[]和CString的转换上~~

       一般来说,提到转换成CString,就会想到赋值转换或是用.Format(...)~~但是,这次我用temp.Format(L"%s",my_szBuffer),结果temp里竟然是乱码~~~后来,从网上找了很多办法来测试,花费了很长时间,终于发现其实方法很简单:

char my_szBuffer[4096];
memset(my_szBuffer, 0, sizeof(my_szBuffer));
my_nLength = Receive(my_szBuffer, sizeof(my_szBuffer));
CString temp;
temp.Format(L"%s", CString(my_szBuffer)); //一定要把char[]用CString强制转换,否则CString temp里会有乱码
pDlg->m_MsgR.InsertString(0, temp);
 
 
 
 
 
 
 
 
for (int i = 0;i < my_SendData.GetLength();i++)
{
my_szBuffer[i] = my_SendData[i]; //CString转成char[]实在没什么好办法,网上的办法转后总会在每个字符之间加一个.(点),不知道怎么回事,所以只好用for了~~但for循环时却没在CString里发现.(点),可能是被mfc的接口给屏蔽了吧~~
}
Send(my_szBuffer, my_SendData.GetLength(), 0);
 
      所以发上来mark一下,顺便帮助一下跟我有同样烦恼的人们~~毕竟,这方法还挺难找的~而且没见过的人估计都想不到可以这样试~~~
 
QQ图片20150716153953
微信截图_20150716154123
 

char[]与CString互转》上有4条评论

  1. Pingback引用通告: BZ编程小组 作品 | BZ编程小组

  2. Pingback引用通告: 10天一个QQ | BZ编程小组

  3. Pingback引用通告: 我的第一个arduino程序~~ | BZ编程小组

  4. Pingback引用通告: 飞机大战 | BZ编程小组

发表评论

电子邮件地址不会被公开。 必填项已用*标注