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 @ 2020-09-19 22:24  txwtech  阅读(644)  评论(1编辑  收藏  举报