string如何实现相加减?
我想吧string当int玩。
#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;}
#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()是什么? 好神奇
#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就不适用了。
#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;}
[解决办法]
更正一些计算错误.
#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;}