(string1+string2).c_str()的问题

图片说明
请问这个 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;