C++版大数相加:字符串实现

所以大数即,一般的整数类型无法直接表示,通常即通过字符串表示,下面是用c++字符串实现相加,比较粗糙,但大致原理应该是表述清楚了:

std::string stringAdd( const std::string& strLeft, const std::string& strRight )
{
    //结果最长为较长数字加1
    int nLeftLength = strLeft.length();
    int nRigthLength = strRight.length();
    int nLargeLength = nLeftLength >= nRigthLength ? nLeftLength : nRigthLength;
    std::string strResult( nLargeLength+1, '0' );
    int nCount = 0;
    while( nLargeLength )
    {
        char nTempLeft;
        if( nLeftLength )
        {
            nTempLeft = strLeft[--nLeftLength];
        }
        else
        {
            nTempLeft = '0';
        }
        cout << "tempLeft:" << nTempLeft << std::endl;
        char nTempRigth;
        if( nRigthLength )
        {
            nTempRigth = strRight[--nRigthLength];
        }
        else
        {
            nTempRigth = '0';
        }
        cout << "tempRight:" << nTempRigth << std::endl;
        //计算当前位的值
        int nTemp = nTempLeft-'0' + nTempRigth-'0' + strResult[nLargeLength]-'0';
        cout << "temp:" << nTemp << std::endl;
        strResult[nLargeLength] = (nTemp%10)+'0';
        cout << "nLargeLength:" << nLargeLength << std::endl;
        //如果超过了10则应进1
        if( nTemp >= 10 )
        {
            strResult[nLargeLength-1] = 1+'0';
        }
        nLargeLength--;
    }
    return strResult;
}