为什么 string::c_str() 在动态分配字符串时返回 const char* ?

7ud*_*d0r 3 c++ string constants char

为什么它返回一个常量字符指针?C++11 标准说:

返回的指针指向字符串对象当前使用的内部数组,用于存储符合其值的字符。

动态分配的东西怎么可能是constant( const char*)?

Jer*_*fin 6

在 C 和 C++ 中,const或多或少地转换为“只读”。

因此,当某事物返回 a 时char const *,这并不一定意味着它所指向的数据实际上是const——它只是意味着您正在接收的指针仅支持读取而不是写入它指向的数据。

字符串对象本身可能能够修改该数据——但是(至少通过您收到的指针)您不能直接修改数据。