매우 큰 수끼리 더하게 되면(또는 다른 연산을 수행할 때) 숫자 오버플로우가 일어나 원하는 결과값을 얻을 수 없다. 이런 경우, 수를 string으로 변환하여 연산을 진행할 수 있다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string add_num_by_string(string str1, string str2)
{
long long sum = 0;
string result;
while (!str1.empty() || !str2.empty() || sum > 0)
{
if (!str1.empty())
{
sum += str1.back() - '0';
str1.pop_back();
}
if (!str2.empty())
{
sum += str2.back() - '0';
str2.pop_back();
}
result.push_back((sum%10)+'0');
sum /= 10;
}
reverse(result.begin(), result.end());
return result;
}