В одной из моих программ мне приходится взаимодействовать с некоторым устаревшим кодом, который работает с const char *
.
Допустим, у меня есть структура, которая выглядит так:
struct Foo
{
const char* server;
const char* name;
};
My приложение более высокого уровня работает только с std :: string
, поэтому я подумал об использовании std :: string :: c_str ()
, чтобы вернуть const char *
указатели.
Но каков срок жизни c_str ()
?
Могу ли я сделать что-то подобное, не столкнувшись с неопределенным поведением?
{
std::string server = "my_server";
std::string name = "my_name";
Foo foo;
foo.server = server.c_str();
foo.name = name.c_str();
// We use foo
use_foo(foo);
// Foo is about to be destroyed, before name and server
}
Или я должен немедленно скопировать результат ] c_str ()
в другое место?
Спасибо.