Di salah satu program saya, saya harus berinteraksi dengan beberapa kode lama yang berfungsi const char*
.
Katakanlah saya memiliki struktur yang terlihat seperti:
struct Foo
{
const char* server;
const char* name;
};
Aplikasi tingkat tinggi saya hanya berurusan dengan std::string
, jadi saya berpikir untuk menggunakan std::string::c_str()
untuk mendapatkan const char*
petunjuk kembali .
Tapi untuk apa seumur hidup c_str()
?
Bisakah saya melakukan sesuatu seperti ini tanpa menghadapi perilaku yang tidak ditentukan?
{
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
}
Atau apakah saya harus segera menyalin hasil dari c_str()
ke tempat lain?
Terima kasih.
.c_str()
. Saya tidak mengerti mengapa kadang-kadang saya hanya mendapatkan bagian dari string, sampai saya mengerti bahwaconst char*
itu tidak hidup selamanya, tetapi sampai string itu hancur