¿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

Respuestas a la pregunta(7)

Su respuesta a la pregunta