怎么从CString 变到 const char*?




//我按孙鑫视频15课编的,vc6下好好的。

         CString str;
GetDlgItemTextW(IDC_EDIT4,str);
int num;
num=str.GetLength()+1;
sendto(m_socket,str,num,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR));
SetDlgItemTextW(IDC_EDIT4,L"");

/*报错:vs2010\mfc\聊天室\聊天室\聊天室dlg.cpp(233): error C2664: 'sendto' : cannot convert parameter 2 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
*/

//然后,我改了一下,
         CString str;
GetDlgItemTextW(IDC_EDIT4,str);
int num;
num=str.GetLength()+1;
char*pch;
pch=new char[num;
memset(pch,0,num);
memcpy(pch,str.GetBuffer(num),num);
sendto(m_socket,pch,num,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR));
SetDlgItemTextW(IDC_EDIT4,L"");
编译通过,只是我在运行时,在IDC_EDIT4中输入几个字符,在另一个显示编辑框IDC_EDIT3中只显示1个字符,比如我输“skfjsj”,IDC_EDIT3只显示s.

]

11 个解决方案

#1


我运行了一下你的程序
memcpy(pch,str.GetBuffer(num),num);
这一行运行结束后,字符串是正确的,
你现在就检查一下你接收端取字符的时候是不是哪里出错了,不行了就把程序贴上来,看看

#2


CString转成char*
WideCharToMultiByte();(UNICODE下);
或者使用USES_CONVERSIONS; T2A();

#3


你肯定用的是 unicode. 
涉及到字符转化,微软太恶心了,自己的那一套和unicode 不通用..

#4


引用 1 楼 likezhaobin 的回复:
我运行了一下你的程序
memcpy(pch,str.GetBuffer(num),num);
这一行运行结束后,字符串是正确的,
你现在就检查一下你接收端取字符的时候是不是哪里出错了,不行了就把程序贴上来,看看


不行,贴程序,这个不好贴,mfc到处是代码,我QQ:854120886,可否,远程协助一计,感激不尽。

#5


引用 3 楼 alfacuton 的回复:
你肯定用的是 unicode. 
涉及到字符转化,微软太恶心了,自己的那一套和unicode 不通用..


刚学MFC ,不懂

#6


求人理

#7


项目-》属性-》配置属性-》字符集-》使用多字节字符集

按照上面的步骤改一下试试。

#8


这个问题至少 看了10遍了,就是unicode 跟ansi编码的问题,自己去看相关的资料

#9


引用 7 楼 shiyunqiang 的回复:
项目-》属性-》配置属性-》字符集-》使用多字节字符集

按照上面的步骤改一下试试。


懂了,谢谢

#10


引用 9 楼 xhxingyi 的回复:
引用 7 楼 shiyunqiang 的回复:

项目-》属性-》配置属性-》字符集-》使用多字节字符集

按照上面的步骤改一下试试。


懂了,谢谢


你最终还是用了 多字节,你应该用unicode 的. 
那样你的程序通用性好,离开了微软你的程序照样可以用。


#11


引用 10 楼  的回复:
引用 9 楼 xhxingyi 的回复:

引用 7 楼 shiyunqiang 的回复:

项目-》属性-》配置属性-》字符集-》使用多字节字符集

按照上面的步骤改一下试试。


懂了,谢谢


你最终还是用了 多字节,你应该用unicode 的. 
那样你的程序通用性好,离开了微软你的程序照样可以用。




 要是继续用UNICODE的话,该如何改程序呐, 请教
关注微信公众号

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com