En uno de mis programas, tengo que interactuar con un código heredado que funciona con const char*
.
Digamos que tengo una estructura que se parece a:
struct Foo
{
const char* server;
const char* name;
};
Mi aplicación de nivel superior solo se ocupa de std::string
, así que pensé en usarla std::string::c_str()
para recuperar const char*
sugerencias.
Pero, ¿de qué dura la vida c_str()
?
¿Puedo hacer algo como esto sin enfrentar un comportamiento 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
}
¿O se supone que debo copiar inmediatamente el resultado de c_str()
a otro lugar?
Gracias.
.c_str()
. No entendía por qué a veces obtengo solo partes de la cadena, hasta que entendí queconst char*
no vive para siempre, sino hasta que la cadena se destruye