关于两个string相加
两个string对象可以相加,结果是两个string拼接而成。
string s1 = "hello", s2 = "world";
string s2 = s1 + s2; // 结果为helloworld
字符(串)也可以和string对象相加,因为标准库允许将字符字面值和字符串字面值转换成string对象,但要求在+号两侧必须至少有一个为string:
// 允许字符字面值与string相加
string s4 = s1 + ',' + s2; // 输出hello,world
string s5 = ',' + '='; // 实质上为','和'='的ASCII码值相加,相加得不到字符串“,=”且会报错
string s6 = s1 + ',' + '='; // 连加原理
string s7 = ',' + '=' + s1; // error
其中,s5会编译出错,+号两侧的运算对象都不是string, 而s6等效于
string s6 = (s1 + ',') + '=' ;
其中表达式s1 + ','是一个string对象。 而s7等效于
string s7 = (',' + '=' ) + s1;
括号里的表达式试图将两个字符字面值加在一起,而编译器根本做不到这一点。