小弟碰到一个纠结的问题:
    有一个CString型的字符串变量和一个char型字符数组,用AfxMessageBox把它们打出来结果是一样的,我用strcpy()把字符串变量赋给另一个char字符数组,然后用strcmp()函数比较这两个数组,结果却是不一样,这是为什么呢?求解啊

解决方案 »

  1.   

    CString 用GetBuffer转换成数组吧
      

  2.   

    补充:如果不能用strcmp,还有别的办法判断吗?
      

  3.   

    CString是一个对象,直接比较当然不行
    获得对象的char *后再判断
      

  4.   

    myCode.GetDiskInfo(0);//获取硬盘序列号并加密
    myReg.Open("SOFTWARE\\AVL\\SerialNumber");
    myReg.Read("SerialNumber",&Regstr);//读取注册表中序列号并赋给Regstr(CString型)
    strcpy(StrQY1,Regstr);StrQY1和StrQY2都是char型
    strcpy(StrQY2,myCode.szCode);myCode.szCode是char型数组
    if(!strcmp(StrQY1,StrQY2)) AfxMessageBox("注册成功");
      

  5.   

    如何获得对象的char *,能说的明白点吗?
      

  6.   

    strcpy(StrQY1,Regstr);StrQY1和StrQY2都是char型
    strcpy(StrQY1, Regstr.GetBuffer(Regstr.GetLength()));
    Regstr.ReleaseBuffer();
      

  7.   

    if(!strcmp(StrQY1,StrQY2)) AfxMessageBox("注册成功");
    这一句你这样写有点问题,如果StrQY1<StrQY2返回的也是真
    你单步调一下,看这一句返回的是什么???
      

  8.   

    单步调试的时候,看到的这两个变量的值是一样的么???如果有空格的化AfxMessageBox不一定能看出来,
      

  9.   

    StrQY1,StrQY2里面内容是啥?你单步跟踪下看看
      

  10.   

    CString带有字符串比较方法啊。