std::string'den char*'a
Bir std::string veri türünü bir **char* veya char[]** veri türüne dönüştürmek istiyorum.
std::string str = "string";
char* chr = str;
Sonuçlar geldi: "error: cannot convert 'std::string' to 'char' ... ".
Bunu yapmak için hangi yöntemler mevcut?
303
3
Otomatik olarak dönüştürülmez (Tanrı'ya şükür). C string versiyonunu elde etmek için
c_str()
metodunu kullanmanız gerekecektir.Bir
const char *
döndürdüğüne dikkat edin;c_str()
tarafından döndürülen C tarzı dizeyi değiştirmenize izin verilmez. Eğer onu işlemek istiyorsanız, önce kopyalamanız gerekir:Ya da modern C++'da:
Sadece aynı içeriği temsil eden C tarzı bir dize istiyorsanız:
Eğer new içerikli C tarzı bir string istiyorsanız, bunun bir yolu (derleme zamanında string boyutunu bilmediğiniz için) dinamik ayırmadır:
Daha sonra
delete[]
yapmayı unutmayın.Bunun yerine statik olarak ayrılmış, sınırlı uzunlukta bir dizi istiyorsanız:
std::string` bu türlere örtük olarak dönüştürülmez, çünkü bunu yapmaya ihtiyaç duymak genellikle bir tasarım kokusudur. Buna gerçekten ihtiyacınız olduğundan emin olun.
Eğer bir `char*'a kesinlikle ihtiyaç duyuyorsanız, muhtemelen en iyi yol budur:
Girdi olarak geçmek için sadece C tarzı bir dizeye ihtiyacınız olduğunu varsayarsak: