现在的位置: 首页 > 综合 > 正文

关于VC宽字节操作

2014年02月06日 ⁄ 综合 ⁄ 共 728字 ⁄ 字号 评论关闭

VC2008在创建MFC应用程序的时候,默认字符集是unicode方式,即:

_T(),L表示unicode字符串
unicode字符串,一个字符占两个字节
例如如下代码:
CString str=_T("我们123abc是");
int len=str.GetLength();  //len=9,而不是12
 
char *psendbuf = NULL; //定义发送缓冲区
int len = m_send.GetLength()*2;  //取得输入字符串长度m_send.GetLength()* sizeof(TCHAR)  le0 = CStringA(str).GetLength();
psendbuf = new char[1024];
ZeroMemory(psendbuf, len);
//宽字节转byte数组
 WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, (LPCWSTR)m_send, len, (LPSTR)psendbuf, len*2, NULL, NULL);
 int ilen=0;
 for(int i=0;i<len;i++)
 {
  ///0表示数组结束位,这样可以统计实际字节数,即一个汉字两个字节,一个英文字符一个字节的问题
    if(psendbuf[i]==0x00)
   {
      ilen=i;
      break;
   }
 }
 int Ret = send(s, psendbuf, ilen, 0);
    if(Ret<=0)
    {
    printf("Send error");
 
    }
    printf("send %d/n",Ret);
以上代码解决了宽字节发送的问题,因为英文字符占一个字符的。
WinCE下是用unicode方式处理的。

抱歉!评论已关闭.