將字串文字與字串連接
在 C 中,運算子可用於連接字串和字串文字。但是,此功能存在限制,可能會導致混亂。
在問題中,作者嘗試連接字串文字「Hello」、「,world」和「!」以兩種不同的方式。第一個範例:
<code class="cpp">const string hello = "Hello"; const string message = hello + ",world" + "!";</code>
本例中,程式碼編譯並執行成功。這是因為運算子的第一個運算元是字串物件 (hello),因此編譯器將其視為字串和兩個字串文字的串聯。
但是,第二個範例:
<code class="cpp">const string exclam = "!"; const string message = "Hello" + ",world" + exclam;</code>
編譯失敗。這是因為最左邊的運算子試圖連接兩個字串文字,這是不允許的。編譯器將此程式碼解釋為:
<code class="cpp">const string message = (("Hello" + ",world") + exclam);</code>
第一個串聯嘗試將兩個指標(const char* 文字)加在一起。
要解決此問題,程式碼應該:
將前兩個字串之一連接為一個字串物件:
<code class="cpp">const string message = string("Hello") + ",world" + exclam;</code>
使用括號強制先計算第二個字串:
<code class="cpp">const string message = "Hello" + (",world" + exclam);</code>
無法使用連接兩個字串文字的原因是因為字串文字儲存為字符數組,不能直接將其加在一起。當您在大多數情況下使用字串文字時,它會轉換為指向其初始元素的指針,這對於運算符來說不是有效的操作數。
因此,請務必記住,只有最左邊的兩個運算元之一連接表達式中可以是字串文字。然而,字串文字可以透過將它們彼此相鄰放置來連接,如下所示:
<code class="cpp">"Hello" ",world" "Hello,world"</code>
以上是為什麼使用字串文字進行字串連線失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!