本討論探討了C 標準模板庫中c_str() 和data() 函數之間的細微差別( STL) 和其他實作。
空終止問題
通常說c_str() 總是傳回一個以空結尾的字串,表示它以空字元(' '),而data( ) 則不然。然而,這種區別通常是特定於實現的。
實作細節
在實際實作中,data() 可能會在內部呼叫 c_str() 來取得以 null 結尾的表示式。或者,兩個函數可以執行相同的操作,返回指向基礎字串資料的指針,而無需明確空終止。
使用的含義
這種差異突出了以下內容的重要性:了解您正在使用的具體實現。通常,如果您需要空終止字串以實現與 C 風格 API 或二進位協定的互通性,請使用 c_str()。否則,如果不需要 null 終止,則 data() 可能會提供改進的效能。
型多功能性
另一個考慮因素是 C 中的字串並不完全由字元組成。它們可以包含任何類型的元素。在這種情況下,data() 更合適,因為它的名稱更好地反映了它傳回的資料的通用性質。
C 11 Update
值得注意的是在 C 11 及更高版本中,data() 和 c_str() 都被要求行為相同。這意味著 data() 現在需要傳回以 null 結尾的字串,從而消除了前面提到的差異。
以上是在 C STL 中何時使用 c_str() 與 data()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!