Añadiendo cadenas de enteros

Estoy tratando de escribir un algoritmo para un proyecto más grande que tome dos cadenas que sean ambos enteros grandes (solo usando números de 10 dígitos para esta demostración) y los sumaré para producir una cadena final que represente con precisión la suma de Las dos cuerdas originales. Me doy cuenta de que hay formas mejores de hacerlo desde el principio, pero se supone que debo usar cadenas de enteros grandes en lugar de un entero largo.

Mi pensamiento fue tomar las dos cuerdas originales, invertirlas para que las posiciones de uno, la posición de decenas, y así sucesivamente se alineen correctamente para agregar. Luego, una posición a la vez, convierta los caracteres de las cadenas en enteros únicos y agréguelos y luego use esa suma como la posición de unidades o de otro modo para la cadena final, que una vez completada también se revertirá al orden correcto de los caracteres. .

Creo que donde me estoy metiendo en problemas me preparo para el evento en el que los dos enteros de las posiciones correspondientes en sus cadenas se suman a una suma mayor que 9, y luego habría transferido un poco del resto a la siguiente posición. Por ejemplo, si tuviera 7 y 5 en las posiciones de unidades que se sumarían a 12, así que mantendría el 2 y agregaría 1 a la posición de las decenas una vez que volviera para la operación de la posición de las decenas.

No estoy obteniendo resultados que sean de alguna manera precisos y después de pasar una gran cantidad de tiempo tropezándome tratando de rectificar mi algoritmo, no estoy seguro de qué debo hacer para solucionar esto.

Espero que mi proceso previsto sea claro y que alguien pueda indicarme la dirección correcta o corregir algún error que pueda tener en mi programa.

Gracias por adelantado.

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main()
{
    string str1 = "1234567890", str2 = "2345678901"; //Two original strings of large integers
    string rev_str1, rev_str2;
    int int1 = 0, int2 = 0;
    string final; //Final product string, sum of two original strings
    int temp_int = 0, buffer_int, remainder = 0;
    string temp_str = "", buffer_str;
    char buffer[100] = {0};

    cout << "str1 = " << str1 << endl;
    cout << endl;
    cout << "str2 = " << str2 << endl;
    cout << endl;

    rev_str1 = string(str1.rbegin(), str1.rend());
    rev_str2 = string(str2.rbegin(), str2.rend());

    for (int i = 0; i < 10; i++)
    {
        buffer_str = rev_str1.at(i);
        int1 = atoi(buffer_str.c_str());
        buffer_str = rev_str2.at(i);
        int2 = atoi(buffer_str.c_str());
        buffer_int += (int1 + int2 + remainder);
        remainder = 0;

        while (buffer_int > 9)
        {
            buffer_int -= 10;
            remainder += 10;
        }

        temp_str = itoa(buffer_int, buffer, 10);
        final += temp_str;
    }

    final = string(final.rbegin(), final.rend());

    cout << "final = " << final << endl;
    cout << endl;
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta