Em um dos meus programas, tenho que fazer interface com algum código legado com o qual funciona const char*
.
Digamos que tenho uma estrutura parecida com:
struct Foo
{
const char* server;
const char* name;
};
Meu aplicativo de nível superior lida apenas com std::string
, então pensei em usar std::string::c_str()
para obter const char*
dicas de volta .
Mas qual é a vida útil de c_str()
?
Posso fazer algo assim sem enfrentar um comportamento indefinido?
{
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
}
Ou devo copiar imediatamente o resultado de c_str()
para outro lugar?
Obrigado.
.c_str()
. Não entendi porque às vezes recebo apenas partes do fio, até que entendi que oconst char*
não vive para sempre, mas até que o fio seja destruído