В одній із моїх програм я маю взаємодіяти зі старим кодом, з яким працює 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*
не живе вічно, але поки струна не зруйнована