Dans un de mes programmes, j'ai une interface avec un code existant qui fonctionne avec const char*
.
Disons que j'ai une structure qui ressemble à:
struct Foo
{
const char* server;
const char* name;
};
Mon niveau supérieur de demande ne traite que d' std::string
, alors j'ai pensé à l'aide d' std::string::c_str()
de revenir const char*
des pointeurs.
Mais qu'est-ce que la durée de vie d' c_str()
?
Puis-je faire quelque chose comme cela sans faire face à un comportement indéfini ?
{
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 suis-je censé copier immédiatement le résultat de l' c_str()
à un autre endroit ?
Je vous remercie.