怎么从CString 变到 const char*?

一鸣惊天 2011-11-04 10:45:15


//我按孙鑫视频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.

]
...全文
145 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangf0802 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 9 楼 xhxingyi 的回复:

引用 7 楼 shiyunqiang 的回复:

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

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


懂了,谢谢


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



要是继续用UNICODE的话,该如何改程序呐, 请教
alpha.5 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xhxingyi 的回复:]

引用 7 楼 shiyunqiang 的回复:

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

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


懂了,谢谢
[/Quote]

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


一鸣惊天 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 shiyunqiang 的回复:]

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

按照上面的步骤改一下试试。
[/Quote]

懂了,谢谢
rh742831388 2011-11-05
  • 打赏
  • 举报
回复
这个问题至少 看了10遍了,就是unicode 跟ansi编码的问题,自己去看相关的资料
shiyunqiang 2011-11-05
  • 打赏
  • 举报
回复
项目-》属性-》配置属性-》字符集-》使用多字节字符集

按照上面的步骤改一下试试。
一鸣惊天 2011-11-05
  • 打赏
  • 举报
回复
求人理
一鸣惊天 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 alfacuton 的回复:]

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

刚学MFC ,不懂
一鸣惊天 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 likezhaobin 的回复:]

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

不行,贴程序,这个不好贴,mfc到处是代码,我QQ:854120886,可否,远程协助一计,感激不尽。
alpha.5 2011-11-04
  • 打赏
  • 举报
回复
你肯定用的是 unicode.
涉及到字符转化,微软太恶心了,自己的那一套和unicode 不通用..
Eleven 2011-11-04
  • 打赏
  • 举报
回复
CString转成char*
WideCharToMultiByte();(UNICODE下);
或者使用USES_CONVERSIONS; T2A();
加泰罗尼亚 2011-11-04
  • 打赏
  • 举报
回复
我运行了一下你的程序
memcpy(pch,str.GetBuffer(num),num);
这一行运行结束后,字符串是正确的,
你现在就检查一下你接收端取字符的时候是不是哪里出错了,不行了就把程序贴上来,看看

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧