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

我想知道为什么 std::string::c_str() 返回 const char * type

如何解决我想知道为什么 std::string::c_str() 返回 const char * type

我想知道为什么 std::string::c_str() 返回 const char * 类型,即使 sting 是 char 数组类型。

    string s("Hello");

一个字符串 s。 它由一个字符类型的数组和

s[1] = 'a';

我也可以像上面一样更改元素。 但是,如果我调用 c_str() 来知道字符串对象中字符串的起始地址,它返回的是 const char * 类型。

因此,我必须使用 strcpy() 将其转换为 char 类型的数组。

为什么它返回 const 类型?

解决方法

让某些原语保持不变有助于提高效率。如果编译器知道您不允许更改某个值,则它可以以对可变值无法实现的方式进行优化。

同样,可以使用 K&R 首次构建 C 时不存在的新 CPU 内存保护功能来保护常量值以防止缓冲区溢出尝试。

这些是拥有不可变 String 原语的一些参数。

另见:https://stackoverflow.com/a/28442823/1168588

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