首頁  >  文章  >  後端開發  >  以下是一些標題選項,請記住問題格式: 直接、清晰: * C 11 中 `string::c_str()` 仍然以 Null 結尾嗎? * C 語言中 `string::c_str()` 是否保證 Null 終止

以下是一些標題選項,請記住問題格式: 直接、清晰: * C 11 中 `string::c_str()` 仍然以 Null 結尾嗎? * C 語言中 `string::c_str()` 是否保證 Null 終止

Barbara Streisand
Barbara Streisand原創
2024-10-26 14:34:02275瀏覽

Here are a few title options, keeping in mind the question format:

Direct and Clear:

* Is `string::c_str()` Still Null-Terminated in C  11?
* Does `string::c_str()` Guarantee Null Termination in C  11?

More Engaging:

* C  11 Mystery: Is `string::c_str

在 C 11 中 String::c_str() 不再以 Null 結尾嗎?

在 C 11 中,string:: 的行為 c_str() 一直是個有爭議的問題。一些消息來源表明它可能不再產生以 null 結尾的字串。

但是,經過仔細檢查,很明顯事實並非如此。 C 11 中operator[] 的定義要求字串在內部使用以null 結尾的緩衝區。這意味著根據operator[]定義的c_str()也必須傳回以null結尾的字串。

具體來說,C 11標準的第21.4.5節規定operator[]必須傳回「對具有值charT() 的T 類型物件的參考;引用的值不得修改。」這表示字符串列末尾必須包含一個空字元。

此外,第21.4.7.1/1 節將c_str() 定義為「一個指標p,使得p i == &operator[](i) 對於每個我在[0,size()] 中。 」這意味著c_str() 提供對與operator[] 相同的緩衝區的訪問,該緩衝區必須以null 終止。

因此,儘管最初存在擔憂, string::c_str() 仍然保證產生 null- C 11 中的終止字串。

以上是以下是一些標題選項,請記住問題格式: 直接、清晰: * C 11 中 `string::c_str()` 仍然以 Null 結尾嗎? * C 語言中 `string::c_str()` 是否保證 Null 終止的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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