W jednym z moich programów muszę połączyć się z jakimś starszym kodem, który działa z const char*
.
Powiedzmy, że mam strukturę, która wygląda następująco:
struct Foo
{
const char* server;
const char* name;
};
Moja aplikacja wyższego poziomu zajmuje się tylko tym std::string
, więc pomyślałem o użyciu, std::string::c_str()
aby odzyskać const char*
wskaźniki.
Ale co to jest życie c_str()
?
Czy mogę zrobić coś takiego, nie napotykając niezdefiniowanego zachowania?
{
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
}
A może mam od razu skopiować wynik w c_str()
inne miejsce?
Dziękuję Ci.
.c_str()
. Nie rozumiałem, dlaczego czasami dostaję tylko części struny, dopóki nie zrozumiałem, żeconst char*
nie żyje wiecznie, ale dopóki struna nie zostanie zniszczona