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

C 11 中的 std::string 是否保證以 Null 終止?

Linda Hamilton
Linda Hamilton原創
2024-12-07 20:27:13816瀏覽

Is std::string in C  11 Guaranteed to be Null-Terminated?

C 11 的 std::string 中的空終止

在 C 中,字串通常使用 std::string 類別表示。在 C 11 之前,關於 std::string 物件是否始終以 null 終止存在歧義。

C 11 連續儲存保證

在 C 11 中, std::string 類別保證了其內容將被連續儲存。這解決了 Herb Sutter 在 2008 年文章中提出的擔憂之一。

採用無效終止提案

至於無效終止的要求和禁止複製-on-write 實現,Sutter 文章中提到的建議在C 的最終草案中並未完全採納11.

使用&str[0]

但是,根據[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.c_str()傳回的指針,其中s 是string,相當於字串中首字的位址(&s[0])。

因此,在 C 11 中,使用 &str[0] 存取 std 的首字符是安全的::string 對象,假設它沒有被外部因素修改。

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

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