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中文網其他相關文章!