c ++ string(int)+ string(int)

Joh*_*ith 1 c++ string add uint64

我有两个字符串,都只包含数字.这些数字大于最大值uint64_t.

我怎样才能添加这两个数字,然后将结果转换为字符串?

pad*_*ddy 6

好吧,你可以使用更大的数据类型(例如处理大整数的库),或者你可以快速敲击自己的数据类型.

我建议如果这是一次性的,你会做很长时间的补充,就像你在学校开始的几年里学到的那样.您可以直接在两个字符串上操作,添加列,执行'carry',并构建包含结果的另一个字符串.您无需转换为二进制文件即可完成所有这些操作.

这里.只是为了好玩,我为你找到了一个解决方案:

string Add( const string& a, const string& b )
{
    // Reserve storage for the result.
    string result;
    result.reserve( 1 + std::max(a.size(), b.size()) );

    // Column positions and carry flag.
    int apos = a.size();
    int bpos = b.size();
    int carry = 0;

    // Add columns
    while( carry > 0 || apos > 0 || bpos > 0 )
    {
        if( apos > 0 ) carry += a[--apos] - '0';
        if( bpos > 0 ) carry += b[--bpos] - '0';
        result.push_back('0' + (carry%10));
        carry /= 10;
    }

    // The result string is backwards.  Reverse and return it.
    reverse( result.begin(), result.end() );
    return result;
}
Run Code Online (Sandbox Code Playgroud)

请注意,为清楚起见,此代码甚至不会尝试处理错误.它也没有做否定,但解决这个问题并不困难.