In einem meiner Programme muss ich mit einem Legacy-Code arbeiten, mit dem funktioniert const char*
.
Nehmen wir an, ich habe eine Struktur, die so aussieht:
struct Foo
{
const char* server;
const char* name;
};
Meine übergeordnete Anwendung befasst sich nur mit std::string
, daher habe ich darüber nachgedacht std::string::c_str()
, const char*
Zeiger zurückzugewinnen.
Aber wie lange dauert es c_str()
?
Kann ich so etwas tun, ohne mich einem undefinierten Verhalten zu stellen?
{
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
}
Oder soll ich das Ergebnis sofort c_str()
an einen anderen Ort kopieren ?
Danke dir.
.c_str()
. Ich habe nicht verstanden, warum ich manchmal nur Teile der Saite bekomme, bis ich verstanden habe, dass dieconst char*
nicht für immer lebt, sondern bis die Saite zerstört ist