微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C std :: string初始化的行为不正确

为什么以下代码编译?它编译并运行良好的铿锵和打印首先.但是,我认为正确的行为应该是抱怨并发出正确的错误.
#include <iostream>
#include <string>

int main()
{
    std::string s{ "first","second" };
    std::cout << s << std::endl;
}

这个问题的灵感来自this.

解决方法

std :: string有一个模板构造函数,它接受两个迭代器.当你传递字符串文字时,它们会衰减为char const *,它符合迭代器的条件.但是,由于这些指针不能形成有效范围,因此您具有未定义的行为.

原文地址:https://www.jb51.cc/c/115815.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐