C++里竟然没有大数加减的封装类吗? = =。 有吗?
暂时自写了一个暂存来用
//输入两个字符串,求和输出减数
string stringAdd(string a,string b){ //输入两个字符串,以字符串的形式输出和
int len1 = a.length(); //取长度
int len2 = b.length();
int c = 0; //寄存进位
int reg1,reg2; //寄存各个位数
char ch;
string ans = ""; //返回的答案
int i = 0;
while(i<len1&&i<len2){ //字符的最小长度内相加
reg1 = a[len1-i-1]-'0';
reg2 = b[len2-i-1] - '0';
c = reg1 + reg2 + c;
ch = c%10+'0';
ans += ch;
c /=10;
i++;
}
if(len1==len2){ //如果同等长度,说明之后加上进位之后的数字就行了
while(c>0){
ch = c%10+'0';
ans += ch;
c /=10;
}
reverse(ans.begin(),ans.end()); //反转ans,返回值
return ans;
}
if(i==len1){ //说明字符a,比较短,将进位c和b串剩下的字符相加放到ans里
while(i<len2){
reg1 = b[len2-i-1]-'0';
c = c +reg1;
ch = c%10 +'0';
ans += ch;
c /= 10;
i++;
}
while(c>0){
ch = c%10+'0';
ans += ch;
c /=10;
}
reverse(ans.begin(),ans.end()); //反转ans,返回值
return ans;
}
if(i==len2){
while(i<len1){
reg1 = a[len1-i-1]-'0';
c = c +reg1;
ch = c%10 +'0';
ans += ch;
c /= 10;
i++;
}
while(c>0){
ch = c%10+'0';
ans += ch;
c /=10;
}
reverse(ans.begin(),ans.end()); //反转ans,返回值
return ans;
}
return "emm..."; //随便整个无效输出
}