为了账号安全,请及时绑定邮箱和手机立即绑定

在C ++ 11中,std :: string总是以null结尾吗?

在C ++ 11中,std :: string总是以null结尾吗?

C++
吃鸡游戏 2019-08-19 17:02:24
在C ++ 11中,std :: string总是以null结尾吗?在他的网站2008年的一篇文章中,Herb Sutter声明如下:由于与并发相关的原因,有一个积极的建议是在C ++ 0x中进一步加强这一点并且需要空终止并且可能禁止写时复制实现。以下是该文件:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html。我认为本文中的一个或两个提案很可能会被采纳,但我们会在下一个或两个会议上看到。我知道C ++ 11现在保证std :: string内容连续存储,但他们是否在最终草案中采用了上述内容?现在使用类似的东西会安全&str[0]吗?
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

是。根据C ++ 0x FDIS 21.4.7.1/1,std::basic_string::c_str()必须返回

一个指针pp + i == &operator[](i)每个iin [0,size()]

这意味着给定一个字符串s,返回的指针s.c_str()必须与string(&s[0])中的初始字符的地址相同。


查看完整回答
反对 回复 2019-08-19
  • 1 回答
  • 0 关注
  • 494 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信