a1=strcmp((char *)(LPCTSTR)strTmp1,(char *)(LPCTSTR)"度");(红色部分为网上有人说必须加上才行)
strTmp1 为读取combo box控件的内容,选项有“度、度.分秒、弧度”三种,为什么我无论选择哪种a1的结果都为-1,求指导,对于strcmp是第一次用,所以不是很熟悉MFCstrcmp

解决方案 »

  1.   

    对应的combo box控件ID为IDC_COMBO_a,变量名为a_combo我是在这个控件下添加事件处理程序,为CBN_SELCHANGE,其相应代码为
                                     a_combo.GetWindowTextW(strTmp1);
      

  2.   

    strcmp()比较的是字符的ASCII码大小,这样比较不合适,因为汉字应该超出了ASCII码范围了。
    你可以转定义一下,比如:
    0-弧度
    1-分秒
    2-度
    这样大小一幕了然。
      

  3.   

    a1=strcmp((char *)(LPCSTR)strTmp1,(char *)(LPCSTR)"度");
      

  4.   

    我现在将汉字改为了英文,a1=strcmp((char *)(LPCTSTR)strTmp1,(char *)(LPCTSTR)"deg");
    当strTmp1的值为deg时,为什么a1的值为-1???不为0么?
      

  5.   

    估计是编码问题,胡乱强转是没用的
    改为
    _tcscmp(strTmp1, _T("度"));

    strTmp1.Compare(_T("度"));
      

  6.   

    是谁说的必须要加(char *)的?如果不加就编译不过(说明你是宽字节版本),那么你加了只是编译过了,实际是错误的,因为你的字符版本都不对。
      

  7.   

    看你的用法,strTmp1是不是CString类型?
    这个类对象直接就可以与字符串比较,你不看msdn的啊?
      

  8.   

    a1=strcmp((LPCTSTR)strTmp1,_T("度"));
      

  9.   

    1.检查工程设置的字符集设置
    2.比较两个字符串是否相同的方法很多,为什么不用CString::Compare简单明了
    3.使用strcmp函数之前要搞清楚它的在不同字符集的用法、参数类型,看MSDN是正确之路。