vc中两个cstring 类型的变量,用strcmp()来比较对吗?
下面这段代码,不管我输入什么,每次我所得到的都是same,
怎么回事?
if(strcmp(m_dEdit1,m_dEdit2)==0)
{
m_dEdit3="same";
}
else
{
m_dEdit3="different";
}
UpdateData(FALSE);

解决方案 »

  1.   

    CString类型的比较可以用CString类的成员函数
    operator == : Comparison operators (case sensitive). 
    Compare :Compares two strings (case sensitive). 
    CompareNoCase :Compares two strings (case insensitive). 
      

  2.   

    CString类型可以之间用==操作符比较。strcmp是字符数组(char[])的比较函数,虽然CString很多时候可以自动转化为char*,但由于strcmp的实现没有考虑CString的情况,还是不要用strcmp比较CString的好
      

  3.   

    如果你是用两个编辑框作为输入工具,那么在执行你上述代码前需要用UpdateData(TRUE);将窗口中编辑框的内容交换到内部变量中来。
    这样试试看UpdateData(FALSE);if(strcmp(m_dEdit1,m_dEdit2)==0)
    {
    m_dEdit3="same";
    }
    else
    {
    m_dEdit3="different";
    }
      

  4.   

    strcmp(m_dEdit1,m_dEdit2)==0;
    strcmp比较的是两个字符串指针变量,并非两个CString对象,
    这样改试试看
    strcmp(m_dEdit1.GetBuffer(),m_dEdit2.GetBuffer())
      

  5.   

    lingfeng8888(棱枫),你说的两种方法,都不管用呀。
    zhaolaoxin() ,你可不可以说清楚一点,就我的问题给出一个答案。
    谢谢
      

  6.   

    跟踪一下,在进入if判断时m_dEdit1,m_dEdit2这两个变量的值是多少,看看是在哪个环节没有将屏幕上输入的值交换到这两个变量中。
      

  7.   

    CString类型可以之间用==操作符比较