O que é a vida útil de std :: string :: c_str ()?

Em um dos meus programas, tenho que interagir com algum código legado que funcione comconst char*.

Digamos que eu tenho uma estrutura que se parece com:

struct Foo
{
  const char* server;
  const char* name;
};

Minha aplicação de nível superior lida apenas comstd::string, então pensei em usarstd::string::c_str() voltarconst char* ponteiros.

Mas qual é a vida útil dec_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 dec_str() para outro lugar?

Obrigado

questionAnswers(7)

yourAnswerToTheQuestion