请问这个 const char *c_p2 = (str1 + str2).c_str();和const char *c_p3 = (str = str1 + str2).c_str();有什么区别 为什么c_p2的第一个字符不显示
c_ptr2指向的是一个临时对象。
楼上正解 c_str()这个函数在使用的时候需要注意的地方还是蛮多的
举个例子
string a="aaa";
string b="bbb";
//临时对象被销毁 以前都没想过原来还有残留的数据 按理说应该都是空
const char *c=(a+b).c_str();
cout<<*c<<endl;
for(string::size_type i=0;i<(a+b).size();i++)
cout<<c[i];
cout<<endl;
//变量依旧存在
string d=a+b;
const char *dd=d.c_str();
cout<<*dd<<endl;