首頁 >後端開發 >C++ >C 11 的 `std::string` 保證以 Null 終止嗎?

C 11 的 `std::string` 保證以 Null 終止嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-08 14:37:13540瀏覽

Is C  11's `std::string` Guaranteed to Be Null-Terminated?

C 11 中的 std::string 空終止

在 C 11 中,std::string 關於空終止的行為仍然是一個重要主題。如同先前討論中所討論的,Herb Sutter 提議收緊 C 0x 中的要求,以強制執行空終止,並可能出於並發原因禁止寫時複製實現。

C 11 的最終草稿確實採納了這些建議。根據[string.accessors] p1,std::basic_string::c_str():

Returns: A pointer p such that p + i == &operator[](i) for each i in [0,size()].

這個關鍵要求意味著給定一個字串s,s.c_str() 傳回的指標必須相等到字串中首字元的位址(&s[0])。因此,現在可以安全地利用 &str[0] 存取 std::string 的底層字元陣列。此行為可確保一致且可靠的空終止,使其適合與 C 樣式空終止字串相容。

以上是C 11 的 `std::string` 保證以 Null 終止嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn