Dans l'un de mes programmes, je dois m'interfacer avec du code hérité qui fonctionne avec const char*
.
Disons que j'ai une structure qui ressemble à:
struct Foo
{
const char* server;
const char* name;
};
Mon application de niveau supérieur ne traite que std::string
, j'ai donc pensé à l'utiliser std::string::c_str()
pour récupérer des const char*
pointeurs.
Mais quelle est la durée de vie c_str()
?
Puis-je faire quelque chose comme ça 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 c_str()
vers un autre endroit?
Je vous remercie.
.c_str()
. Je ne comprenais pas pourquoi parfois je n'obtiens que des parties de la chaîne, jusqu'à ce que je comprenne que leconst char*
ne vit pas éternellement, mais jusqu'à ce que la chaîne soit détruite