您好,CString str1;
     CString str2;
     str1.Format(_T("%s"),"Can you");
     str2.Format(_T("%s"),"See me");
     大部分情况下:str1=str1+str2,语句是不能将str2连接到str1上去的,同时str1=str2+str1是可以将str1连接到str2上去的。有趣的是在另外一些情况下会相反,str1=str1+str2可行,str1=str2+str1不可行,请问这是什么原因?
      另外我还想问问为什么CString str1(_T("Can"));语句只能将第一个字符'C'初始化给str1,我知道在ANSI下不存在这个问题,但是为什么在UNICODE下会发生这些问题呢,谢谢。

解决方案 »

  1.   

    因为Unicode编码的时候中间有很多0所以就认为结束了至于你说的str1=str2+str1这种情况 我还没遇见过。
    lz是否能贴出来出问题的代码呢?
      

  2.   

    回复:akirya
    其实代码就是:
    CString str1; 
    CString str2; 
    str1.Format(_T("%s"),"Can you"); 
    str2.Format(_T("%s"),"See me"); 
    str1=str1+str2;//CString::operator= returned:"Can you" 
    随便试,我试了n回啦,假如一言难尽的话,给我点资料看也行,谢谢。
    至于str1=str2+str1也不行的情况,我就不想贴代码了,因为那又臭有长。谢谢。
      

  3.   

    CString str1;  
    CString str2;  
    str1.Format(_T("%s"), _T("Can you")); //format后面的字符串加_T宏  
    str2.Format(_T("%s"), _T("See me"));  
    str1=str1+str2;//CString::operator= returned:"Can you"  
      

  4.   

    没问题呀,我这里测试显示
    Can youSee me
      

  5.   

    我试了一下 根本没发生你说的情况
    str1=str1+str2
    str1=str2+str1结果是一样的  是不是你的代码有问题
      

  6.   

    回复:txk1452 您说的对,我format函数用错了,谢谢大家。