В одной из моих программ я должен взаимодействовать с некоторым устаревшим кодом, который работает с const char*
.
Предположим, у меня есть структура, которая выглядит так:
struct Foo
{
const char* server;
const char* name;
};
Мое приложение более высокого уровня имеет дело только с std::string
, поэтому я подумал об использовании std::string::c_str()
для возврата указателей const char*
.
Но каково время жизни c_str()
?
Могу ли я сделать что-то вроде этого без облика undefined?
{
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()
в другое место?
Спасибо.