理解STL 字串中c_str() 和data() 的區別
STL 中c_str() 和data() 的區別由於不同的實現,字串經常會引發問題。雖然有些人聲稱 c_str() 保證空終止而 data() 不保證,但實際行為可能有所不同。
空終止與非空終止
理論上,c_str() 傳回一個以null 結尾的字串,這表示它在末尾包含一個額外的null字元(相當於C 中的' ')。這對於與期望字串以這種方式終止的傳統 C 函數進行互動至關重要。相反,data() 傳回指向底層字元數組的指針,但不一定保證空終止。
實作細節
但是,在實務中,一些實作透過簡單地在內部呼叫 c_str() 來實作 data() 。在這種情況下,兩個函數實際上表現相同。請務必查閱具體實現的文件以進行澄清。
何時使用哪個函數
一般來說,經驗法則是:
C 11 及以後
從C 11 開始,引入了標準化更改:現在需要data()返回一個以null 結尾的字串,使其在功能上等同於c_str()。
以上是什麼時候應該對 STL 字串使用 c_str() 和 data()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!