auto_ptr<BYTE> data(new BYTE[dataLen]);
dataLen = recv(acceptedSock, (char*)data.get(), dataLen, 0);CString Str;
LPTSTR Buf = Str.GetBuffer(dataLen+1);
memcpy((void*)Buf, data.get(), dataLen);
Buf[dataLen] = '\0';
Str.ReleaseBuffer();
AfxMessageBox(Buf);最后显示出来的总是在对的内容后面加一大堆乱码为什么会这样呀???谁能帮帮我??
解决方案 »
- 关于GDI+的画笔问题,高手入进来看下
- 在VC做的EXCEL插件中,我如何取得_Application
- 去面试时请假大家都怎么说的呀?
- 菜鸟求教之CListCtrl 的常用功能——100分
- 初学者-关于Document/view
- 用ShellExecute 执行 .reg文件时,怎样才能避免出现 是否要添加进注册表 的提示框?
- 如何加系统服务
- 告急:怎样访问数据库?
- 超难题:为什么在Win98下,频繁的使用CreatePen,DeleteObject,SelectObject会出现资源泄漏!?
- 怎样对屏幕抓图?(欢迎up,gz...)
- 关于VC的一点头文件的问题(在线等)
- waveOutWrite 问题
而Cstring在加入内容时会动态分配内存的
dataLen = recv(acceptedSock, (char*)data.get(), dataLen, 0);CString Str;
LPTSTR Buf = Str.GetBuffer(dataLen+1);
memcpy((void*)Buf, data.get(), dataLen);
Buf[dataLen] = '\0'; ======================>这一句的执行好像有问题?看看MSDN吧。
Str.ReleaseBuffer(); ==========>以下两句顺序出了问题。
AfxMessageBox(Buf);
======================改==为==:==========================
CString Str;
LPTSTR Buf = Str.GetBuffer(dataLen+1);
memcpy((void*)Buf, data.get(), dataLen);
Str = Str.Left(dataLen);
AfxMessageBox(Str);
用char *Buf;
Buf = new char(dataLen + 1);
memcpy(Buf, data.get(), dataLen);
Buf[dataLen] = '\0';
AfxMessageBox(Buf);