c_str() 函数名,顾名思义就是C语言风格的字符串,相对于标准的C++ string串而言的。
返回指针是const char * 指针的本质原因是,该指针指向的字符串和string对象里存的完全是同一个字符串。
#include <iostream>
#include <string>
using namespace std;
int main(){
string s("0123456789");
const char *ps = s.c_str();
cout<<"ps->"<<ps<<endl;
s[0] = 'A';
cout<<"ps->"<<ps<<endl;
cout<<hex<<"&s:"<<(int*)(&s[0])<<endl;
cout<<hex<<"&s[0]"<<(int*)(&s[0])<<endl;
cout<<hex<<"&ps:"<<(int*)ps<<endl;
return 0;
}
执行结果:
若想拥有string对象中的字符串,只能另外copy一份。