如何获得两个数字字符串的总和-C
How to get the sum of two strings of numbers - C++
如何获得两个数字字符串的总和?例如:
string num1 = "12";
string num2 = "4";
string sum = num1 + num2;
所以string sum
将等于"16"
我该如何在C ?
中执行此操作我尝试使用ASCII字符进行操作,但它不起作用,我无法将字符串转换为整数
平坦的答案是
string sum = std::to_string(std::stoi(num1) + std::stoi(num2));
请参阅 live demo 。
关于您的评论的更广泛的答案是:
您不能使用该技术使用大整数值进行数学。
需要使用适当的第三方库。
使用字符串添加大整数,您可以做类似的事情。
string doSum(string a, string b)
{
if(a.size() < b.size())
swap(a, b);
int j = a.size()-1;
for(int i=b.size()-1; i>=0; i--, j--)
a[j]+=(b[i]-'0');
for(int i=a.size()-1; i>0; i--)
{
if(a[i] > '9')
{
int d = a[i]-'0';
a[i-1] = ((a[i-1]-'0') + d/10) + '0';
a[i] = (d%10)+'0';
}
}
if(a[0] > '9')
{
string k;
k+=a[0];
a[0] = ((a[0]-'0')%10)+'0';
k[0] = ((k[0]-'0')/10)+'0';
a = k+a;
}
return a;
}
int main()
{
string result = doSum("1234567890", "123789456123");
cout << result << "n";
}
输出
125024024013
参考:请参阅inideone.com
您的问题的答案可以像这样写
string addStrings(string num1, string num2) {
string res="";
int n=num1.size();
int m=num2.size();
int carry=0;
int j;
for(int i=n-1,j=m-1;i>=0 || j>=0;i--,
j--){
int a;
if(i>=0){
a=((int)(num1[i])-48);
}
else {
a=0;
}
int b;
if(j>=0){
b=((int)(num2[j])-48);
}
else{
b=0;
}
cout<<num1[i]<<" "<<num2[i]<<endl;
cout<<a<<" "<<b<<endl;
int sum=carry+a+b;
int u=sum%10;
res+=u;
carry=sum/10;
}
res+=carry;
cout<<res<<endl;
reverse(res.begin(),res.end());
return res;
}
我添加了Cout语句以检查功能内部的情况
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 字符串操作 - 字符计数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 在C++中使用 UTF-8 字符串和字符
- 如何使用SQLite将数据库中的值导出为C / C++中的字符串或字符?
- 递归形成字符串中所有数字字符的中间和?
- 如何在C++中为字符串添加字符?
- C++ 无法将 std::vector<BYTE> 转换为字符串或字符数组
- C++完全复制要字符串的字符列表,而不会忽略多个空格
- 我如何知道字符串中字符相对于英文字母的位置值?
- 如何将 VB.Net 字符串作为字符*传递给C++dll?
- 有没有办法将最初作为字符串输入的数字字符数组复制到双向链表中
- 如何使用 c++ 将数字字符转换为字符串
- 使用find_if和isalnum在字符串中找到字母数字字符
- 在没有字符串或字符帮助的情况下查找数字的反面(例如:2500 reverse 0025)
- 确保字符串只包含字母数字字符的更好方法
- 在检测字符串是否包含数字字符时,这有什么问题
- 为什么我无法擦除字符串的数字字符?
- if语句-测试字符串或字符的大写,小写和数字
- 如何在 c++ 中从字符串中删除所有非字母数字字符