在他的《Accelerated C》一書中,Koenig 介紹了使用 ' ' 運算子連接字串的概念文字和物件。雖然這看起來很簡單,但存在一些微妙的細微差別,可能會導致意想不到的結果。
考慮以下兩個例子:
const string hello = "Hello";
const string message = hello ",world" "!";
const string exclam = "!";
const string message = "Hello" ",world" exclam;
第一個範例成功連接了三個字串。然而,第二個例子失敗了。
要理解差異,我們必須考慮「 」運算子的關聯性。 ' ' 運算子是從左到右關聯的,這意味著它從左到右進行計算。如果不考慮的話,這可能會導致意外的行為。
在第二個範例中,表達式可以用括號括起來:
const string message = ("Hello" ",world") exclam;
如您所見,兩個字串文字「Hello」和「,world」首先連接在一起。這會產生一個字串文字,無法與字串物件「exclam」進一步連接。
有多種方法可以解決此問題:
const string message = string("Hello") ",world" exclam;
const string message = "Hello" (",world" exclam);
“ ”運算子旨在連接字串對象,而不是字串文字。字串文字是一個字元數組,當在表達式中使用時,它會轉換為指向其初始元素的指標。在 C 中不允許添加兩個指針,就像連接字串文字一樣。
雖然不能使用' ' 運算子連接字串文字,但您可以透過並排放置它們來組合它們:
"Hello" ",world"
這相當於:
"Hello,world"
這對於將長字串文字分解為多行很有用。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3