设两个string 分别为p,q,然后取较短的那个作为基准,同时设置进位器of=0,每次从p和q的末端pop出两个数字相加并加上进位器of,如果有进位就将相加的结果-10,进位器of=1,否则of=0,并将相加的最终结果Push进入vector,完成上述操作后,再取有剩余长度的那个串,加上进位器的数值,再按照上述判断方法,将剩余的位Push进入vector即可。若最终Of还是等于1,就在最高位再加一个1.

#include<vector>
using namespace std;
int main(){
    string p,q;
    while(cin>>p>>q){
    int of=0;
    int result=0;
    vector<int> vec;
    int len=min(p.size(),q.size());
    for(int i=0;i<len;i++){
        result=p.back()-'0'+q.back()-'0'+of;
        p.pop_back();
        q.pop_back();
        if(result>=10){
            result-=10;
            of=1;
        }
        else{
            of=0;
        }
        vec.push_back(result);
    }
    if(q.size()>0){
        for(int i=q.size()-1;i>=0;i--){
            result=q[i]-'0'+of;
            if(result>=10){
                result-=10;
                of=1;
            }
            else{
                of=0;
            }
            vec.push_back(result);
        }
    }
    if(p.size()>0){
        for(int i=p.size()-1;i>=0;i--){
            result=p[i]-'0'+of;
            if(result>=10){
                result-=10;
                of=1;
            }
            else{
                of=0;
            }
            vec.push_back(result);
        }
    }
    if(of==1){//若执行完上述操作,最高位仍有进位,再给最高位一个1
        vec.push_back(1);
    }
    for(int i=vec.size()-1;i>=0;i--){
        cout<<vec[i];    
    }
        cout<<endl;
    }     
}