如何获得两个数字串的总和 \- C

新手上路,请多包涵

如何获得两个数字字符串的总和?例如:

 string num1 = "12";
string num2 = "4";

string sum = num1 + num2;

所以 string sum 将等于 "16"

我如何在 C++ 中做到这一点?

我尝试使用 ascii 字符进行操作,但它不起作用我也无法将字符串转换为整数

原文由 RonthaDon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 492
2 个回答

要使用字符串添加大整数,您可以执行以下操作。

 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

参考: 在 Ideone.com 上查看完整代码

原文由 Wasi Ahmad 发布,翻译遵循 CC BY-SA 3.0 许可协议

平淡的答案是

string sum = std::to_string(std::stoi(num1) + std::stoi(num2));

请参阅 现场演示


对于 您的评论,更广泛的答案是:

您不能使用该技术对 大整 数值进行数学运算。

这需要使用适当的 3rd 方库。

原文由 πάντα ῥεῖ 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题