In uno dei miei programmi, devo interfacciarmi con un codice legacy con cui funziona const char*
.
Diciamo che ho una struttura che assomiglia a:
struct Foo
{
const char* server;
const char* name;
};
La mia applicazione di livello superiore si occupa solo di std::string
, quindi ho pensato di utilizzare std::string::c_str()
per tornare indietroconst char*
puntatori.
Ma qual è la durata di c_str()
?
Posso fare qualcosa di simile senza dover affrontare un comportamento indefinito?
{
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
}
O dovrei copiare immediatamente il risultato di c_str()
in un altro posto?
Grazie.
.c_str()
. Non ho capito perché a volte ricevo solo parti della stringa, fino a quando non ho capito checonst char*
non vive per sempre, ma fino a quando la stringa non viene distrutta