MFC中CString的问题..

chinoistzc 2010-05-14 09:01:57

问题这样子的.
在socket编程中,我使用
CString newText;
sentNum = send(sockClient,newText,sizeof(newText)+1,0);

不能将参数 2 从“CString”转换为“const char *”


我想把CString转换为const char *.
杂个办呢?


对了,在写MFC程序中,是不是CString 是主要的字符串类?


CString好像是ATL里的,不是类?




...全文
168 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
spring560 2010-05-15
  • 打赏
  • 举报
回复
mfc是我心中永远的痛
程老师2088 2010-05-15
  • 打赏
  • 举报
回复
学习了
softist 2010-05-15
  • 打赏
  • 举报
回复
//如果你用Unicode的CString

USES_CONVERSION;
指针:(const char *)T2A((LPCTSTR)newText);
长度:strlen(指针);
softist 2010-05-15
  • 打赏
  • 举报
回复
CString newText;

//如果你没有UniCode
指针:(LPCTSTR)newText
长度:newText.GetLength()
zxdyu2009 2010-05-15
  • 打赏
  • 举报
回复
UNICODE 用CString的GetBuffer没有用,还是要转换

xidiancjw 2010-05-15
  • 打赏
  • 举报
回复
CString strtest;
char * charpoint;
charpoint=strtest.GetBuffer(strtest.GetLength());
jianhenjh 2010-05-15
  • 打赏
  • 举报
回复
学习了
EYIIJIUIUI 2010-05-15
  • 打赏
  • 举报
回复
GetBuffer
EYIIJIUIUI 2010-05-15
  • 打赏
  • 举报
回复
LPCSTR
sichuanwww 2010-05-15
  • 打赏
  • 举报
回复
char tt[2000];
CString aa="ddddddd";
sprintf(tt,"%s",aa);
不说害怕 2010-05-14
  • 打赏
  • 举报
回复


国际化还这么复杂啊.
Practise_Think 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhupf 的回复:]

楼上很正确..顶楼上..


现在要国际化啊...注意unicode字符串
[/Quote]

网络通讯要国际化的话,不要UNICODE,而要UTF-8
gudufuyun 2010-05-14
  • 打赏
  • 举报
回复


CString newText;
newText=_T("测试");
char *pz==(LPTSTR)(LPCTSTR)newText;
sentNum = send(sockClient,pz,newText.GetLength()*sizeof(wchar_t),0);
不说害怕 2010-05-14
  • 打赏
  • 举报
回复
楼上很正确..顶楼上..


现在要国际化啊...注意unicode字符串
WaistCoat10 2010-05-14
  • 打赏
  • 举报
回复
CString newText;
newText=_T("测试");
sentNum = send(sockClient,(LPCTSTR)newText,newText.GetLength()*sizeof(TCHAR),0);
一名程序员 2010-05-14
  • 打赏
  • 举报
回复
CString newText;
sentNum = send(sockClient,newText.GetBuffer(newText.GetLength()),newText.GetLength(),0);
newText.ReleaseBuffer();
Practise_Think 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gushleo 的回复:]

CString newText;
sentNum = send(sockClient,newText.GetBuffer(256),sizeof(newText)+1,0);


newText.ReleaseBuffer(),
[/Quote]

sizeof(newText) 是有问题的

建议学习一下 CString 是怎样实现的吧

http://www.codepads.com/2010-04-03-09-32-37/40-vc--windows/741-cstring.html
sjdev 2010-05-14
  • 打赏
  • 举报
回复
CString不仅仅是ATL的,它是ATL、MFC能公用的类。
windows_star 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gushleo 的回复:]

CString newText;
sentNum = send(sockClient,newText.GetBuffer(256),sizeof(newText)+1,0);


newText.ReleaseBuffer(),
[/Quote]

其实这样也不行,我以前也遇到过这样的情况。

这样就行:

CString str = "sdfsdafsd";

TCHAR szbuff[] = str.GetBuffer();
str.ReleaseBuffer();

sentNum = send(sockClient,(char*)szbuff,strlen(szbuff),0);
wuweiyin 2010-05-14
  • 打赏
  • 举报
回复
好像可以强制转换.
加载更多回复(2)

16,472

社区成员

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

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

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