首页 >后端开发 >C++ >C 11 中 std::string 总是以 Null 终止吗?

C 11 中 std::string 总是以 Null 终止吗?

DDD
DDD原创
2024-12-17 08:59:23806浏览

Is std::string Always Null-Terminated in C  11?

在 C 11 中 std::string Null 终止吗?

2008 年,Herb Sutter 提议收紧 C 0x 中的字符串实现,以要求空终止。然而,C 11 标准包含了一种不同的方法:

是的,std::string 在 C 11 中始终以 null 结尾。

该标准指定指针std::basic_string::c_str() 返回的值将等于字符串中首字符的地址 (&s[0])。因此,在 C 11 中使用 &str[0] 是安全的。

后果:

  • 现在使用 &str[0] 提供了一种安全有效的方法访问底层字符串字符。
  • 空终止的保证简化了与 C 风格的互操作性API 和数据结构。
  • 但是,这并不意味着 std::string 是写时复制实现。实现仍然可以选择通过写时复制或保留空终止的其他策略来优化性能。

以上是C 11 中 std::string 总是以 Null 终止吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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