假设 CString str1,str2,但是str1和str2是变量,我是接收了其他地方出过来的值,这个值是会改变的,用strcmp()和Compare()都没成功,希望能给解答一下? 

解决方案 »

  1.   

    直接相比较就行
    if ( str1 == str2 )
    ....
      

  2.   

    直接比较就行了。CString已经重载了==运算符
      

  3.   

    直接比较好像不行,CString str1,str2;str1="q2";str2="q2";这样直接比较可以,如果我把str2换成是个变量就不行了,我从数据库中读出数据,
    CDatabase databa;   //创建一个CDatabase类对象,代表一个到数据库的连接
    databa.Open(_T("ig"));  // ig是我建的数据源
    igz rs(&databa);    //igz是我创建的CRecordset类的派生类
    rs.Open(CRecordset::snapshot,_T("Select * from aaa"));
    CString sts=rs.m_chepai;//这是读出的表中的数据
    我用m_list.InsertString(0,sts);试过显示的就是q2,但是如果把str1
    与sts进行比较就是不行。
      

  4.   

    既然已经重载==,何必还用compare呢?
      

  5.   

    没有仔细看,不过CString 直接比较肯定是可以的,不可能改成变量就不行了。
      

  6.   

    字符串先TrimLeft(),再TrimRight()最后再MakeLower(),我不信就不行
      

  7.   

    Debug下调试一下看看具体的内容是什么不就清楚了~
      

  8.   

    单步跟下吧,要不用AfxMessageBox,把信息打出来看看
      

  9.   

    CString 不是有很多集成的方法吗,像getlength(), 或者一个字符一个字符地比较也行,str[0] str[1] 神马的
      

  10.   

    str1.CompareNoCase(str2) == 0 //相等
      

  11.   

    应该没有问题
    可能楼主在数据库取的值后没有使用TrimLeft() TrimRight()函数处理