首页 > 解决方案 > 我想知道为什么 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 类型?

标签: c++stringcharconstants

解决方案


使某些原语不可变有助于提高效率。如果编译器知道您不允许更改值,它可以以对可变值不可能的方式进行优化。

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

这些是拥有不可变 String 原语的一些论据。

另请参阅:https ://stackoverflow.com/a/28442823/1168588


推荐阅读