C++ 中 string 和 char[] 型別之間的區別


在本節中,我們將瞭解 C++ 中 string 和 char[] 之間有哪些區別。char[] 本質上是一個字元陣列。因此,此陣列具有一些屬性。這些屬性列在下面。

  • 如果 char[] 在棧段中分配,則它將始終佔用 256 位元組的空間。它不依賴於文字的大小。

  • 如果我們使用 malloc() 或 calloc() 將其動態分配到堆段,那麼我們有責任在使用後釋放記憶體,並且我們始終存在堆分配的開銷。

  • 如果字元陣列的大小大於 256 個字元,則程式可能會崩潰。它可能會在我們的程式碼中生成難看的斷言訊息。

  • 要獲取字串的長度,我們必須每次都掃描整個字元陣列,直到到達 '\0' 字元。

另一方面,C++ 在其標準名稱空間中包含 string。此 string 是一個類,並且它在其內部包含字元陣列。它會自動為使用者管理。在大多數情況下,string 的內建陣列為 16 個字元。因此,對於較短的字串,它不會碎片化字串,但對於較長的字串,它會使用堆段。

C++ string 具有內建的 '\0' 字元。它儲存字串的長度而無需計數。對於較短的文字,它不佔用堆,因此可以防止緩衝區溢位。此外,字串在 C++ 中易於使用。

更新於: 2019-07-30

746 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告