加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c 11 – C字符串的内部缓冲区地址未定义的行为

发布时间:2020-12-16 09:57:50 所属栏目:百科 来源:网络整理
导读:在c 11标准下是否存在以下未定义的行为: (试图获取字符串的内部缓冲区的地址) std::string s;... = s[0]; 例如当s为空时? 我知道我们有c_str(),data(),但是. 注意 这是来自与某人的辩论,这不是为了促进hacky编码 解决方法 在C 11中,代码定义明确,但可能无
在c 11标准下是否存在以下未定义的行为:

(试图获取字符串的内部缓冲区的地址)

std::string s;
... = &s[0];

例如当s为空时?

我知道我们有c_str(),data(),但是.

注意

这是来自与某人的辩论,这不是为了促进hacky编码

解决方法

在C 11中,代码定义明确,但可能无法达到预期效果.确切的影响是,根据21.4.5 / 2:

Returns: *(begin() + pos) if pos < size(),otherwise a reference to an object of type T with value
charT(); the referenced value shall not be modified.

因此,如果字符串非空,则返回对内部缓冲区start的引用.如果它为空,则返回对值为0的char的引用,其位置为memory是实现细节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读