BSTR m_type = m_Node->Getattributes()->getNamedItem("TYPE")->Gettext();
char *s_type =_com_util::ConvertBSTRToString(m_type);
if(s_type == "1")
{
    //do something
}
为什么他总是不相等啊?我把s_type强制转换成int同样int 1还是不等于1。
我真没招了,高手们帮忙啊。

解决方案 »

  1.   

    用函数strcmp()他得知等于零就是你的条件或者
    CString str;
    str=s_type;
    str.Find("1")!=-1说明找到了"1"字符串
      

  2.   

    if( !strcmp(s_type, "1"))
    {
    //do something
    }
      

  3.   

    "1"是一个常字符串的指针,指向静态存储区的一块空间,s_type是指向com_util::ConvertBSTRToString给出的一块存储区。虽然两个字符串内容相同,但是指针的值不同。s_type == "1"这样是比较指针是否相等,而不是比较内容是否相等,当然等于false。比较内容是否相等应该这样:if (!strcmp(s_type,"1"))
      

  4.   

    字符串的比较应当用strcmp不能直接用==比较,
    要不采用CString类型,可以直接用==
      

  5.   

    同意楼上的,字符串比较要用strcmp函数
      

  6.   

    谢谢各位,我是在atl中用,所以完全把string忘了,呵呵。给分