两个string对象相加:
两个string对象相加得到一个新的string对象,其内容是左侧的运算对象与右侧的运算对象串接而成。另外,复合赋值运算符(+=)负责把右侧string对象的内容追加到左侧string对象的后面:
string s1="hello,",s2="word\n";
string s3=s1+s2; //s3的内容是hello,word\n
s1+=s2; //等价于s1=s1+s2
字面值和string对象相加:
因为标准库允许把字符字面值和字符串字面值转换成string对象,所以在需要string对象的地方就可以使用者两种字面值来代替:
string s1="hello",s2="world";
string s3=s1+','+s2+'\n';
当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符(+)的两侧的运算对象至少有一个是string:
string s4=s1+","; //正确,把一个string对象和一个字面值相加
string s5="hello"+","; //错误,两个运算对象都不是string
string s6=s1+","+"world"; //正确,相当于string s6=(s1+",")+"world";每个加法运算符都有一个运算对象是string
string s7="hello"+","+s2; //错误,第一个+将字面值直接相加
因为某些历史原因,也为了与C兼容,所以C++语言中的字符串字面值并不是标准库类型string的对象。切记,字符串字面值与string是不同的类型。