c++ - 我想知道为什么 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 原语的一些论据。
推荐阅读
- docker - 混合本地和远程 Docker 镜像仓库?
- javascript - 正则表达式 - 我如何收紧这个?
- python - 两个文本文件列表之间的递归
- postgresql - 连接到我的远程数据库时出现“服务器不听”错误
- r - 使用 purrr 映射 dplyr::select
- xml - Racket 中的 Plist/XML 解析
- java - 如何在没有 java 双引号的情况下发送 Jaxb XmlAttribute 数据
- reactjs - 在 React 中的事件上将所有 className="theme" 的组件从绿色更改为蓝色
- mysql - 数据库架构(帮助)
- java - 适配器的内容发生了变化,但 ListView 没有收到通知。确保您的适配器的内容没有被修改