内の文字列を持つ:+ =私はC++の文字列で遊んでましたし、コンパイル時に次のエラーが発生する理由を私は理解していないC++
string s = "hi";
s += " " + "there!";
エラーメッセージ:
error: invalid operands of types ‘const char [2]’ and ‘const char [6]’ to binary ‘operator+’
を私はまたs+= (" " + "there!");
を試しても動作しません。
このように2進演算子+=
を使用して文字列を連結できないのはなぜですか?
は私たちに、エラーメッセージを伝える、またはそれは実現しませんでした。 –
これはいくつかの既存の答えには暗黙のうちにありますが、C++の優先順位ルールは '' '+ ''の前に評価されていることに言及する価値があるので、差をつける。興味深いことに、 's + =" "there"! "'は動作します - 隣接する文字列リテラルの連結はコンパイルの初期段階で行われ、 's = s +" "+" + "" 'が最初に評価され、' std :: string'の結果に「there!」が含まれます。追加されました - '+'のいずれかの引数が 'std :: string'の場合、それはうまく動作します.... –
+1これらの詳細についてはトニーに感謝します! –