C++ 无法理解以下代码是如何工作的

C++ 无法理解以下代码是如何工作的,c++,string,C++,String,我试图解决这个问题,但我没能解决,所以我研究了讨论,找到了答案,但我仍然无法理解代码的第三行是如何给我输出的。我知道这是一个非常基本的疑问,但我无法得到它。请帮忙 string replaceDigits(string s) { for (auto i = 1; i < s.size(); i += 2) s[i] += s[i - 1] - '0'; return s; } 字符串替换数字(字符串s){ 用于(自动i=1;ishift('a',1)='b'-s[3] ->shi

我试图解决这个问题,但我没能解决,所以我研究了讨论,找到了答案,但我仍然无法理解代码的第三行是如何给我输出的。我知道这是一个非常基本的疑问,但我无法得到它。请帮忙

string replaceDigits(string s) {
for (auto i = 1; i < s.size(); i += 2)
    s[i] += s[i - 1] - '0';
return s;
}
字符串替换数字(字符串s){
用于(自动i=1;i
该任务本质上要求您将字符串中的每个数字替换为
移位(s[i-1],s[i])

因此,对于每个奇数索引
i
,您将
s[i]
从一个字符转换为一个整数(减去
'0'
),然后将其添加到前一个字符
s[i-1]
。写第三行的另一种方法如下:

s[i] = s[i-1] + (s[i] - '0');

如果
s[i]
'1'
,则
s[i]-'0'
1
。然后,我们将该整数添加到上一个索引中字符的ASCII值中,以获得下一个字符。

我没有leetcode帐户。这段代码应该做什么?你对这行有什么理解?这不是
C
code.function shift(C,x),其中C是一个字符,x是一个数字,它在C输入后返回第x个字符:s=“a1b2c3d4e”输出:“abbdcfdhe”解释:数字替换如下:-s[1]>shift('a',1)='b'-s[3] ->shift('b',2)='d'-s[5]->shift('c',3)='f'-s[7]->shift('d',4)=“H'`DeVXM”——代码行是基本C++。这就是为什么LeTeCK网站几乎不值钱,如果你想学习如何编写C++的话。那些网站上的问题是针对那些已经知道他们将要用来回答问题的计算机语言的人。