連接字串文字與字串
在 C 中,運算子可用於連接字串和字串文字。但是,此功能存在限制,可能會導致混亂。
在問題中,作者嘗試連接字串文字「Hello」、「,world」和「!」以兩種不同的方式。第一個例子:
const string hello = "Hello";
const string message = hello ",world" "!";
此時,程式碼編譯運行成功。這是因為運算子的第一個運算元是字串物件 (hello),因此編譯器將其視為字串和兩個字串文字的串聯。
但是,第二個範例:
const string exclam = "!";
const string message = "Hello" ",world" exclam;
編譯失敗。這是因為最左邊的運算子試圖連接兩個字串文字,這是不允許的。編譯器將此程式碼解釋為:
const string message = (("Hello" ",world") exclam);
第一個串聯嘗試新增兩個指標( const char* 文字)在一起。
要解決此問題,程式碼應該:
將前兩個字串之一連接為字串物件:
const string message = string("Hello") ",world" exclam;
使用括號強制先計算第二個:
const string message = "Hello" (",world" exclam);
不能使用連接兩個字串文字的原因是因為字串文字儲存為字元數組,不能直接相加。當您在大多數上下文中使用字串文字時,它會轉換為指向其初始元素的指針,這對於運算符來說不是有效的操作數。
因此,請務必記住,只有最左邊的兩個運算元之一連接表達式中可以是字串文字。然而,字串文字可以透過將它們彼此相鄰放置來連接,如:
"Hello" ",world"
"Hello,world"
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3