了解C ++字符串连接

时间:2013-09-14 03:22:12

标签: c++ string concatenation string-concatenation

在C ++中,我试图理解为什么在构造这样的字符串时没有出现错误:

const string hello = "Hello";
const string message = hello + ", world" + "!";

但是你得到一个编译时错误:

const string exclam = "!";
const string msg =  "Hello" + ", world" + exclam

编译时错误是:

main.cpp:10:33: error: invalid operands of types ‘const char [6]’ and 
‘const char [8]’ to binary ‘operator+’

为什么第一次运行正常但第二次产生编译时错误?

1 个答案:

答案 0 :(得分:7)

如果你把它写出来会更有意义:

hello + ", world" + "!";看起来像这样:

operator+(operator+(hello, ", world"), "!");

虽然

"Hello" + ", world" + exclam看起来像这样

operator+(operator+("Hello" , ", world"), exclam);

由于没有operator+需要两个const char数组,因此代码失败。

然而,没有必要,因为您可以像下面这样连接它们(注意我刚删除了+符号):

const string msg =  "Hello" ", world" + exclam