谢谢大家的帮忙,是这样的。 
我是在做串口程序练习的,先前只是提取另一台电脑发过来的数据,编辑框显示的内容也是正确的,后来就给发过来的数据加上头,长度这些,这样就使得我要显示的数据是被放在字符数组的第5个元素开始,共2个汉字 ,即元素5-8,先一个个放在CString类变量是正确的,再把CString变量的值给编辑框就只有得到1个汉字,for(k=5;k<len-1;k++)//将我要的数据从新放到别的数组里
{
    wenben[u]=*(zhen+k);
    u++;
}
for(k=0;k <u;k++) 

    str.Format("%c",ar[k]); 
    text+=str; 

UpdateData(false);

解决方案 »

  1.   

    不会又是unicode的原因吧!
      

  2.   


    u=0;
    for(k=5;k <len;k++)//将我要的数据从新放到别的数组里 

        wenben[u++]=*(zhen+k); 
    }
    wenben[n] = '\0';text.Format("%s",wenben);
    UpdateData(false);
      

  3.   

    上次的问题自己解决了,是类型转换错了。
    现在是新问题
    给编辑框赋值,数组里明明是2个汉字即4个字节,用sizeof查编辑框是4个字节,可用strlen查了编辑框确是一个字符,但实际上我查了那数组真的收到了“你们”两个字。
      

  4.   

    VARIANT var;
    COleSafeArray col;
    wchar_t wenben[100];
    wchar_t wwenben[100];
    BYTE zhen[100];
    char ar[100];
    CString str,stra;
    long len,k,u=0,n=0;
        
    if(m_m.GetCommEvent()==2)
    {
      var=m_m.GetInput();
      col=var;
      len=col.GetOneDimSize(); 
      for(k=0;k<len;k++)
      {
      col.GetElement(&k,zhen+k);
      } for(k=5;k<len-1;k++)
    {
    wenben[u]=*(zhen+k);
    u++;
    }
        for(k=0;k<u;)
    {
          wwenben[n]=((wenben[k]<<8))+(wenben[k+1]);
    k++;
    k++;
    n++;
    }
    wwenben[n]=0;
         //text.Format("%d",)
       
        WideCharToMultiByte(CP_ACP,   0,   wwenben,   n,   ar,   u,   NULL,   NULL);
    for(k=0;k<u;k++)
    {
       text.Format("%c",ar);
       //text+=str;    
    }
    //long q=strlen(stra);
        //text.Format("%d",q);
    UpdateData(false);
    }
    帮忙看下,谢谢
      

  5.   

    for(k=0;k <u;k++) 

      text.Format("%c",ar[k]); 
      text+=str;   

    这句那时在查错忘了改过来了。
    真的不知道哪里出错了,断点调试,ar里是存了2个汉字