谢谢

解决方案 »

  1.   

    直接比较会按照字符的方法比较。
    你可以直接使用atoi等函数转换,如果转换成功就按照转换之后的值比较。
      

  2.   

    不可以吧,当你不知道类型的时候,有可能两个int是写成string的,比如‘11’和‘9’,怎么比较。
      

  3.   


    用重载就可以了double unknownToDouble(int comp )
    {
    return (double)comp;
    }
    double unknownToDouble( char comp )
    {
    if( '0' <= comp && comp <= '9' )
    comp -= '0';
    return (double)comp;
    }
    //str
    double unknownToDouble( char comp[] )
    {
    char ch;
    if( 0 == strlen( comp )  )
    return 0;
    if( strlen( comp ) > 1 )
    {
    return (double)StrToInt( comp ); //StrToInt我在msdn2001看到的
    }
    else
    {
    ch = comp[0];
    return unknownToDouble( ch );
    }
    }
    比较例子:
         if( unknownToDouble(1) < unknownToDouble('1') || unknownToDouble(1321412.0f) < unknownToDouble( "13424" ) ) 
      

  4.   

    考虑用模板,一般的数据类型可能都实现了>,没有实现>的就是用自己写的类,重载操作符>
      

  5.   

    用函数重载的机制就可以了,
    比如
    bool Compare(CString str1,CString str2);
    bool Compare(int n1,int n2);
    bool Compare(double d1,double d2);
    或者用 MikeChen2003(兔兔)的方法,改进一下其中的函数
    double unknownToDouble(CString str)
    {
       return _tstof(str);
    }
    double unknownToDouble(int comp )
    {
    return (double)comp;
    }
    double unknownToDouble(double comp )
    {
    return comp;
    }你把两个变量var1,var2用unknownToDouble()转换一下就可以了,
    C++编译器会自动选择合适的函数的