首頁 > 後端開發 > C++ > C 11 是否需要 c_str() 和 data() 以空結尾的字串?

C 11 是否需要 c_str() 和 data() 以空結尾的字串?

Mary-Kate Olsen
發布: 2024-10-27 03:15:02
原創
308 人瀏覽過

 Does C  11 Require Null-Terminated Strings for c_str() and data()?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板