Programlarımdan birinde, birlikte çalışan bazı eski kodlarla arayüz oluşturmam gerekiyor const char*
.
Şöyle görünen bir yapım olduğunu varsayalım:
struct Foo
{
const char* server;
const char* name;
};
Üst düzey uygulamam sadece ilgileniyor std::string
, bu yüzden işaretçileri std::string::c_str()
geri almak için kullanmayı düşündüm const char*
.
Ama ömrü ne kadar c_str()
?
Tanımlanmamış davranışlarla karşılaşmadan böyle bir şey yapabilir miyim?
{
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
}
Yoksa hemen sonucunu kopyalamam mı gerekiyor? c_str()
başka bir yere ?
Teşekkür ederim.
.c_str()
. Neden bazen dizenin sadece bazı kısımlarını aldığımı anlamadım, ta kiconst char*
sonsuza kadar yaşamayacağını anlayana kadar, ancak dizi yok olana kadar