如下的一段代码:
char ccc[20] = "字符1 字符2";
char c[10], cc[10];
CString str1, str2;
sscanf( ccc, "%s %s", c, cc );//正确读取
sscanf( ccc, "%s %s", str1, str2 );//str1=str2="字符2"为什么用CString时不能正确读取呢?得到的都是最后的那个字符串
谢谢。

解决方案 »

  1.   

    因为CString是不定长的。
    你可以使用下面的语句试试:
    sscanf( ccc, "%s %s", str1.GetBuffer(0), str2.GetBuffer(0) );
      

  2.   

    好象只能先读到一个字符数组,再赋值给CString,
      

  3.   

    当然有问题了,str1,str2声明后会指向一临时空间,可能是相同的
    所以你可能会得到相同的值,这样就可以
       CString str1, str2;
       str1="aaaaa";
       str2="bbbbb";
       sscanf( ccc, "%s %s", str1, str2 );//正确读取
    一般不能用CString作字串变量用,可能会出问题,作const char *用,肯定没问题
      

  4.   

    这样也可以   CString str1, str2;
       sscanf( ccc, "%s %s", str1.GetBuffer(10), str2.GetBuffer(10) );//正确读取
      

  5.   

    看来是对CString的理解不够啊。
    结帖。