提问者:小点点

从字符串中的int进行加法操作


我设置了一个只填满数字的字符串,并使用for循环迭代它,以便在数学上把它们加在一起(想看看语言是否允许这样做),结果我得到了一些奇怪的数字作为结果。 有人能解释一下为什么会出现这种情况吗?

int main()
{
std::string word = "2355412";
for (int i = 0; i<word.size(); i++){
    int sum = word[i]+word[i+1];

    std::cout << sum << std::endl;
}

return 0;
}

运行时的代码将导致:

101
104
106
105
101
99
50

由于我编写代码的方式,我还认为它应该会在最终值上导致一个超出界限的错误Due word[I+1],从而导致调用一个不存在的值。 有人能解释一下为什么它没有抛出错误吗?


共1个答案

匿名用户

这应该会导致一个越界错误

String::Operator[]不检查边界,它假定您有边界。 如果你用一个超出界限的索引来调用它,你的程序就是格式错误的,任何事情都可能发生。

听起来您想要string::at,它会检查边界,并抛出std::OUT_OF_RANGE