vs2013MFC的socket的send发送数据,只发送了第一个字符的解决方法

m_SocketClient.send(str.getbuffer(0),str.GetLength());//vc6.0的用法

MFC CString转char

CString就是宽字节,如果项目创建的字符集是Unicode 字符集,那么某些地方就需要转换
比如vs2013默认项目,unicode 字符集。
需要用到socket的send发送数据,如果CString str=“txwtech”,
str.getbuffer(0)发送,则只会发送第一个字符
//
所以需要转换
char lpsz=wchat2char(str),
再用m_SocketClient.send(lpsz,str.GetLength());就可以了

 

//多字节转宽字节
wchar_t * char2wchar(const char
 cchar)
{
wchar_t m_wchar;
int len = MultiByteToWideChar( CP_ACP ,0,cchar ,strlen( cchar), NULL,0);
m_wchar= new wchar_t[len+1];
MultiByteToWideChar( CP_ACP ,0,cchar,strlen( cchar),m_wchar,len);
m_wchar[len]= ‘\0’ ;
return m_wchar;
}

//宽字节转多字节
char * wchar2char(const wchar_t
 wchar )
{
char * m_char;
int len= WideCharToMultiByte( CP_ACP ,0,wchar ,wcslen( wchar ), NULL,0, NULL ,NULL );
m_char= new char[len+1];
WideCharToMultiByte( CP_ACP ,0,wchar ,wcslen( wchar ),m_char,len, NULL ,NULL );
m_char[len]= ‘\0’;
return m_char;
}

posted @   txwtech  阅读(654)  评论(1编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示