CString sSJ="8.3";CString sGS="-12+20";经得到的结果是 8.3-12+20怎么做?

解决方案 »

  1.   

    CString这个类不是有很多成员函数吗?而且CString已经重载了+和+=运算符了,
    所以写作CString n=sSj+sGs;
    或是 sSj+=sGS;都行
      

  2.   

    CString  cstrInfo ; 
    cstrInfo.Formart("%s%s", sSJ, sGS) ;
      

  3.   

    CString类的加法已经特殊定义,可以直接使用加法
      

  4.   

    不行的已经试过了
    CString sSJ="8.3";
    CString sGS="-12+20";
    CString sJG;
    sJG=sSJ+sGS;
    显示的结果是:8.3-12+20而并非是16.3
      

  5.   

    这是一个编译原理相关的问题,可以使用语义分析,
    当然,如果不是想那么麻烦也可以按如下方法来做:
    float MathCstring(CString m_strIn)
    {
    CString m_strTemp1=m_strIn,m_strTemp2;
    int m_iLen=m_strTemp1.GetLength();
    float m_fResult;
    while (m_iLen!=0)
    {
    在m_strTemp1中按由左至右的顺序Search运算符,并记录位置到i;
    m_strTemp2=m_strTemp1.left(i);
    m_strTemp1=m_strTemp1.Right(i);
    m_iLen=m_strTemp1.GetLength();
    对m_strTemp2进行Str到Double的转换;//请查MSDN资料
    依据符号和m_strTemp2的值计算m_fResult;
    }retrun m_fResult;
    }
      

  6.   

    int number;
    CString sSJ="8.3"; 
    CString sGS="-12+20"; 
    CString sJG; 
    sJG=sSJ+sGS; 
    number=atoi(sJG);//类型转换
    将CString类型转化成int就可以了。
      

  7.   

    number=atoi(sJG);//类型转换
    atoi不行吧,可能存在浮点的问题
      

  8.   

    CString重载的+和=操作符是进行字符串连接的而不是进行运算的
    还是得通过分别扫描两个字符串,提取其中的数字和符号,然后定义规则进行运算
    其实就是运用编译原理的词法分析和语法分析中的表达式求值部分来解决。
    搞本编译教材看看,网上也有例子的。
      

  9.   

    http://hi.baidu.com/kuangxiangjie/blog/item/1e6aaca131849c8f46106461.html