【发布时间】:2010-10-04 06:31:59
【问题描述】:
std::string 提供const char* c_str ( ) const 其中:
获取等效的 C 字符串
生成一个空终止序列 相同的字符(c-string) 内容作为字符串对象和 将其作为指向数组的指针返回 字符。
终止空字符是 自动附加。
返回的数组指向一个 内部位置与所需 这个序列的存储空间 字符加上它的终止 空字符,但这个值 数组不应该被修改 程序,并且只被授予保留 直到下一次调用 a 的非常量成员函数 字符串对象。
他们为什么不直接定义operator const char*() const {return c_str();}?
【问题讨论】:
-
要记住的一件事是
c_str()只是将一个ptr 返回到std::string的内部缓冲区。因此,返回字符串的生命周期与std::string的生命周期相关联。强制程序员使用c_str()方法有助于(至少对我而言)记住这一点。