为什么字符串变量“sum”不存储任何数据,程序没有给出任何输出

时间:2017-01-27 11:17:51

标签: c++

    int l, s, j, k, carry=0;
    string num1, num2, sum;

    cin >> num1 >> num2;
    l = num1.size();
    s = num2.size();

    for(j=l-1; j>=0; j--)
    {
        k = (num1[j]-'0') + (num2[j]-'0') + carry;
        cout << k<<endl;
        carry = k/10;
        k%=10;
        sum[j]= '0' + k;
    }

    cout  << sum << endl;

我正在尝试使用字符串添加两个数字(两者都具有相同的数字长度)。它没有提供任何输出。

1 个答案:

答案 0 :(得分:4)

在变量声明之后,您的sum变量是一个空字符串。您正在尝试访问它的j元素 - 这是数组索引溢出并且是未定义的行为。

解决方案是用某些东西初始化你的字符串或使用连接而不是改变字符,如下所示:

sum += (char)('0' + k);

UP :此类修补程序会以相反的顺序将结果写入字符串,因此,要获得正确的字符串,还应添加

std::reverse(sum.begin(), sum.end());
循环后

此外,您的代码假定sum长度与两个参数的长度完全相同,这可能是错误的。