首页  >  文章  >  后端开发  >  以下是一些标题选项,请记住问题格式: 直接、清晰: * C 11 中 `string::c_str()` 仍然以 Null 结尾吗? * `string::c_str()` 是否保证 C 语言中的 Null 终止

以下是一些标题选项,请记住问题格式: 直接、清晰: * C 11 中 `string::c_str()` 仍然以 Null 结尾吗? * `string::c_str()` 是否保证 C 语言中的 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 结尾吗? * `string::c_str()` 是否保证 C 语言中的 Null 终止的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn