C++ 整数与字符的加法

C++ 整数与字符的加法,c++,string,ascii,C++,String,Ascii,有人能解释一下在第一次使用ascii值时发生了什么吗?在int中添加char可以正常工作 但在第二个没有工作 你能解释一下它是怎么工作的吗 #include<iostream> using namespace std; int main(){ string str="1234"; str[0]=str[0]+1; //working fine cout<<str<<endl; str[1]=str[1]+'c';

有人能解释一下在第一次使用ascii值时发生了什么吗?在int中添加char可以正常工作

但在第二个没有工作 你能解释一下它是怎么工作的吗

#include<iostream>
using namespace std;
int main(){ 
    string str="1234";

    str[0]=str[0]+1;    //working fine 
    cout<<str<<endl;
    str[1]=str[1]+'c';   //printing some new character at 1 position
    cout<<str<<endl;
}
#包括
使用名称空间std;
int main(){
字符串str=“1234”;
str[0]=str[0]+1;//工作正常

cout
str[1]=str[1]+'c'
'2'+'c'
,这与
2+'c'
不同

在ascii中,
'2'
50
,而
'c'
99

其总和为
149
,不在ascii(0-127)范围内,因此显示的字符取决于您使用的扩展ascii(可能是
ò


如果你想拥有
2+'c'
,你就必须在你的情况下执行
str[1]=str[1]+'c'-'0'

什么是“不工作”的意思?你期望发生什么?实际发生了什么?什么是“工作正常”的意思?我不确定对字符代码做任何算术的意义(除了将它们视为二进制并应用加密算法,结果是二进制)。文本是非常复杂的数据。这是某种编程练习吗?可能值得补充的是,与他们可能想要的语义等价的是
str[1]=(str[1]-“0”)+'c';
请注意,OP的编码在技术上并不能保证是(扩展的)ASCII码,尽管可能是这样。@eerorika:OP编写了ASCII码并对其进行标记,我怀疑OP是否使用EBCDIC:-)@Jarod42-whoops:)知道这一点,OP使用ASCII码的可能性更高,但对于其他访问者来说,这并不是唯一的编码。