C 11 允許在 c_str() 方法中使用非空終止字串嗎?
在 C 11 中,c_str( 的定義) basic_string 類別已更改。現在它被定義為等價於 data(),而 data() 又被定義為傳回指向字串第 n 個元素的指針,其中 n 介於 0 和字串大小減 1 之間。
但是,operator[] 方法的更新定義,它是 c_str() 和 data() 的基礎,明確表示字串現在必須在內部使用 null 終止的緩衝區。
具體來說,operator[] 方法需要傳回值是對值為 charT() 的 T 類型物件的引用,其中 T 是字串元素的類型,charT() 是空字元的類型。此外,該引用值無法修改。
由於 c_str() 和 data() 都要求是 O(1) 操作,因此該實作本質上被迫使用以 null 結尾的緩衝區。此外,operator[] 方法的傳回值要求也意味著終止空字元必須與字串元素位於同一緩衝區中。
以上是C 11 是否需要 c_str() 和 data() 以空結尾的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!