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