我与C字符串玩弄++,我不明白为什么下面的编译时将导致错误:+ =在C++字符串
string s = "hi";
s += " " + "there!";
错误消息:
error: invalid operands of types ‘const char [2]’ and ‘const char [6]’ to binary ‘operator+’
我也试过s+= (" " + "there!");
,它也不起作用。
为什么我不能使用二元运算符+=
以这种方式连接字符串?
告诉我们错误信息,或者它没有发生。 – 2012-02-08 23:57:20
这对某些现有答案是隐含的,但值得一提的是,C++优先规则意味着“+”there!“'在s + ='操作之前被评估,所以你也尝试过的括号没有被'没有任何区别。有趣的是,'s + =“”“there!”'会起作用 - 相邻字符串的连接是在编译的早期阶段完成的,而's = s +“”+“there!”'也可以作为s +“”'首先被评估,然后它的'std :: string'结果有“there!”添加 - 当'+'的任一参数是一个'std :: string'时它工作得很好...... – 2012-02-09 00:38:17
+1谢谢Tony提供这些细节! – 2012-02-09 00:47:20