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