首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

string怎么实现相加减

2012-03-20 
string如何实现相加减?我想吧string当int玩。C/C++ code#include iostream#include stringusing namesp

string如何实现相加减?
我想吧string当int玩。

C/C++ code
#include <iostream>#include <string>using namespace std;int main(){    string s1,s2,total;    cout<<"请输入数字:";    cin>>s1; //1    cout<<"请输入数字:";    cin>>s2; //2    total=s1+s2;    cout<<"total:"<<total<<endl;    return NULL;}


我string学得不是很好,想实现加法运算该怎么改呢?
例如s1输入1,s2输入2 则回车后输出3。怎么实现?

[解决办法]
C/C++ code
#include <iostream>#include <string>using namespace std;int main(){    string s1,s2,total;    cout<<"请输入数字:";    cin>>s1; //1    cout<<"请输入数字:";    cin>>s2; //2    int i = atoi(s1.c_str()) + atoi( s2.c_str());    //total=s1+s2;    cout<<"total:"<<i<<endl;    return NULL;}
[解决办法]
自己写个sting类,然后重载运算符“+”“-”就好了,在函数体内得先把char型的数据转换成int或float型,完成运算后再转换回char型数据。不过实现简单的运算可以,复杂的就得慢慢写了
[解决办法]
向1楼学习一下
int i = atoi(s1.c_str()) + atoi( s2.c_str());

c_str()是什么? 好神奇

C/C++ code
#include <iostream>#include <string>using namespace std;int main(){    string s1,s2,total;    cout<<"请输入数字:";    cin>>s1; //1    cout<<"请输入数字:";    cin>>s2; //2    int i = atoi(s1.c_str()) + atoi( s2.c_str());    //total=s1+s2;    cout<<"total:"<<i<<endl;    system("pause");    return NULL;}
[解决办法]
数字过大时,atoi就不适用了。
C/C++ code
#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){    int i = 0;    string s1,s2,total;    cout<<"请输入数字:";    cin>>s1; //1    cout<<"请输入数字:";    cin>>s2; //2        for(; (i < s1.size()) && (i < s2.size()); i ++)    {                total += s1[s1.size() - i - 1] + s2[s2.size() - i - 1] - '0'  - '0';    }        while(i < s1.size()){ total += (s1[s1.size() - i - 1] - '0');i++;}    while(i < s2.size()){ total += (s2[s1.size() - i - 1] - '0');i++;}        for(i = 0; i < total.size(); i ++)    {        if(total[i]/10){total[i+1] += total[i]/10;}        total[i] = total[i]%10 + '0';    }        reverse(total.begin(),total.end());    cout<< s1 << " + " << s2 << " = " <<total<<endl;    return 0;}
[解决办法]
更正一些计算错误.
C/C++ code
#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){    int i = 0;    string s1,s2,total;    cout<<"请输入数字:";    cin>>s1; //1    cout<<"请输入数字:";    cin>>s2; //2        //执行加法    for(; (i < s1.size()) && (i < s2.size()); i ++)    {                total += s1[s1.size() - i - 1] + s2[s2.size() - i - 1] - '0'  - '0';    }        while(i < s1.size()){ total += (s1[s1.size() - i - 1] - '0');i++;}    while(i < s2.size()){ total += (s2[s1.size() - i - 1] - '0');i++;}        //调整    for(i = 0; i < total.size() - 1; i ++)    {        if(total[i]/10){total[i+1] += total[i]/10;}        total[i] = total[i]%10 + '0';    }        //调整最后一位    if(total[i]/10)    {        total += total[i]/10 + '0';            }    total[i] = total[i]%10 + '0';            //反转    reverse(total.begin(),total.end());    cout<< s1 << " + " << s2 << " = " <<total<<endl;    return 0;} 

热点排行