我與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