const(char)*
'u kullanmıyor musunuz? D
string bar = "Hello ";
string foo = "world!";
bar ~= foo;
dize hazır Hiç C kodu ile arayüz dışında, bir const(char)*
kullanmak gerekmez, tip string
vardır.
D'nin bu birleştirmeye izin vermemesinin nedeni, kelimenin herhangi bir anlamıyla const(char)*
bir dize olmadığından. D dizeleri immutable(char)[]
(alias
'd string
' dır). const(char)*
, sabit bir karakterin sadece bir göstergesidir. C ve C++ 'dan farklı olarak, hiçbir zımni sıfır sonlandırıcı yoktur, bu yüzden D olamaz ve var olduğunu varsaymaz.
string bar = "Hello ";
const(char)* foo = "world!";
bar ~= foo[0..strlen(foo)];
:
sebebi ne olursa olsun kesinlikle bir const(char)*
kullanmalıdır ve bunu boş sonlandırılmış olduğunu biliyor için, o zaman sonra bir string
eklenecek hangi, dilimleme bunun dışında bir const(char)[]
yapabilirsiniz
"Foo" 'nun kesilmesi size bir "string", ancak const (char) [] 'vermez. Dize çubuğu ile birleştirme için hala uyumlu, ancak bir 'dize 'değişkeninde' foo 'dilimleme sonucunu saklamayı denediğinizde bir hata alırsınız. –
@jA_cOp: İyi fark ettim, düzelteceğim. –
bellekte boş sonlandırılmış dize mi, yoksa çubuk ~ = foo yazmak gerekir [0..strlen (foo) + 1]; C interop için son satırda? –