我已经测试了这段代码:
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main()
{
string s1("a"),s2("b");
const char * s = (s1+s2).c_str();
printf("%s\n",s);
}
它返回“ab”。
据我所知,因为(s1 +s2)
是一个临时对象并且可能会以某种方式消失(我不知道),所以const char * s
可能指向未定义的内存并可能被转储。
那么使用这样的东西安全.c_str()
吗?