Почему если записать c_str() (из возвращаемой string ) в массив const char * arr[1] то в массиве не оказывается строки?
Почему если записать c_str() (из возвращаемой string ) в элемент массива const char * arr[1] то в элементе массива не окажется строки? Но если раскомментировать строку uncomment me то все будет работать как ожидается
string func(){ return string{"hello!"};}
int main() {
const char * arr[1];
// cout<<"func().c_str(): "<<func().c_str()<<endl; //uncomment me
arr[0] = func().c_str();
cout<<"arr[0]: "<<arr[0]<<endl; //expected hello!
}
Output: arr[0]:
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Время жизни возвращаемой строки к моменту вывода закончилось, и она уничтожена...
Попробуйте так:
string tmp = func();
arr[0] = tmp.c_str();
cout<<"arr[0]: "<<arr[0]<<endl; //expected hello!