CString sql1,sName1,NameTem,a,b;
GetDlgItem(IDC_EDIT_NAME1)->GetWindowText(sName1);
sql1.Format("SELECT Name1 FROM TestTable WHERE TaskID =1");
db.search(sql1);
NameTem = db.getString("Name1");
a.Format("%s",sName1);
b.Format("%s",NameTem);/* if((StrComp(sName1,NameTem) > 0)||(StrComp(sName1,NameTem) < 0))
{
AfxMessageBox("Name1 is wrong!");
}*/ if(a.Compare(b) == -1)
{   
AfxMessageBox("Name1 is wrong!");
}大家能理解这个的意思吧?我把它给解释下,sName1是EDIT控件里获得的值,NameTem是从数据库里取的值,现在想比较2个CString类型数据的大小,更确切的说是比较是否相等,因为有可能是中文。我在线等,期望大家给解释的详细点,谢谢。应该如何写呢?

解决方案 »

  1.   

    就用Compare
    中文不影响比较
      

  2.   

    msdn的东西: 抄过来Example
    The following example demonstrates the use of CString::Compare.
    // example for CString::Compare
    CString s1( "abc" );
    CString s2( "abd" );
    ASSERT( s1.Compare( s2 ) == -1 ); // Compare with another CString.
    ASSERT( s1.Compare( _T("abe" ) ) == -1 ); // Compare with LPTSTR string.
      

  3.   

    Compare             //直接比较
    CompareNoCase       //忽略大小写
      

  4.   

    直接用关系运算符
    <,<=,>,>=,=,!=
      

  5.   

    用"=="直接比,如果要考虑性能最好不用CString.
      

  6.   

    if( strcmp( a.GetBuffer(0) , b.GetBuffer(0) ) == 0 )
    {
         a的内容和b 的内容相等哈 ;
    }
      

  7.   

    你们说的方法都不行呀,我COPY上来的都是比较不出来的,是不是因为从数据库取出来的数据和从edit的数据不能比较呀?
      

  8.   

    比不出来不一定是因为使用的方法的原因,查看一下你的数据库字段类型。有些数据库的类型(比如CHAR(255))的,你从这样的字段中读出来的值后面有很长的空格存在,而直接输入的就没有,因此比较不出来。建议仔细探究一下根本原因,求人不如求己。祝你好运!
      

  9.   

    我就发现这个问题了,所以不知道怎么去比较,呵呵.能看的出来从数据库里的数据具有空格,但是用Remove函数不行,移除不行error C2664: 'Remove' : cannot convert parameter 1 from 'char [1]' to 'char'
            This conversion requires a reinterpret_cast, a C-style cast or function-style cast.不知道有没有其他更好的方法呢?在线等,谢谢
      

  10.   

    Trim移除前后的空格
    TrimLeft移除前面的空格
    TrimRight移除后面的空格
      

  11.   

    :)既然你可以找到这个字符,那很容易,使用Mid或Left把有效的字符拷贝出来就是了。
      

  12.   

    楼主 我也遇到同样的问题了  请问数据库设置哪里出问题了呢 我设置的数据库字段是nchar(10),谢谢啦
      

  13.   

    Example
    The following example demonstrates the use of CString::Compare.
    // example for CString::Compare
    CString s1( "abc" );
    CString s2( "abd" );
    ASSERT( s1.Compare( s2 ) == -1 ); // Compare with another CString.
    ASSERT( s1.Compare( _T("abe" ) ) == -1 ); // Compare with LPTSTR string.