Я протестировал этот код:
#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
может указывать на память undefined и может быть сброшен.
Так безопасно ли использовать .c_str()
?