新手C++ 练习项目--计算器

醉酒当歌 提交于 2019-12-01 07:42:06

本篇博客用于记录我自己用C++实现的一个计算器,目标是完成加减乘除带括号的四则运算,并在后期用工厂设计模式加以优化。

 

 

Part 1:calculate 1+1=2

实现这样的一个式子的计算,只需要用到字符串分割即可,一开始尝试了stringstream去先读入一整个字符串"1+2",然后创建了两个临时变量int和一个char,用>>去读入,但是发现读入的char放在中间被忽略掉了

string s ="12+34";
    //    stringstream ss(s);
        //    int n1,n2,c;
    //    ss>>n1>>c>>n2;//c is 34 ,the '+' is ignored

然后我就换用了substr去进行分割,substr有两个参数,一个是开始分出字串的位置,另一个是字串的长度,第二个参数默认值是npos,也就是字符串末尾。

    int i =0;
    while(isdigit(s[i]))
    {
        ++i;//pos
    }
    //    int n =atof("22.0");
    //    cout<<n;
    //float d = atof(s.substr(0,i).c_str());
    cout<<cal( atof(s.substr(0,i).c_str()) , atof(s.substr(i+1).c_str()) ,s[i])<<endl;    //string to const char*  //use c_str() 函数

这样就跑出来了一个简单的1+1=2了!但这个程序改起来很麻烦,没有办法适应1+1+1=3,也没有优先级操作,等下一part我们再来做新功能。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!