首页 > 后端开发 > C++ > 正文

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

Barbara Streisand
发布: 2024-10-26 14:34:02
原创
273 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!