¿Qué es std :: string :: c_str () de por vida?
En uno de mis programas, tengo que interactuar con un código heredado que funciona conconst char*
.
Dejemos que tengo una estructura que se parece a:
struct Foo
{
const char* server;
const char* name;
};
Mi aplicación de nivel superior solo trata constd::string
, así que pensé en usarstd::string::c_str()
volverconst char*
punteros.
Pero cuál es la vida útil dec_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 copie inmediatamente el resultado dec_str()
a otro lugar?
Gracias