C++ 中的大整数加法

Biginteger Addition in C++

我正在尝试将两个大整数相加。这是我做的一个功能。 s1 是其中较大的字符串。在传递函数参数期间,我将考虑字符串长度。该代码适用于除 10^(n) 以外的所有值。因此,对于 100 + 2,它显示 o/p 为 2。对于其他 10 次幂的情况也类似。当我进行一些挖掘时,我注意到 for 循环在这些情况下只运行一次。因此 s1.length() 报告长度为 1。我该如何解决?

void addBigInteger (string s1,string s2) {
    string str3;
    reverse(s1.begin(),s1.end());
    reverse(s2.begin(),s2.end());
    int temp = 0,carry=0,i;
    for (i=0;i<s1.length();i++) {

        if ((i+1) > s2.length())
            s2[i] = '0';

        temp = s1[i]-'0'+s2[i]-'0'+carry;
        str3[i] = temp%10 + '0';
        carry = temp/10;
    }
    while (carry!=0) {
        str3[i++] = carry%10 + '0';
        carry = carry/10;
    }

    for (i;i>=0;i--) {
        cout << str3[i];
    }
    cout << endl;
}

您需要使用 str2.push_back('0') 来附加字符,而不是使用越界 i 分配 str2[i]std::string::operator[]不"grow"字符串中的内部存储。