On Fri, Jan 07, 2022 at 07:54:28PM +0000, eugene via Digitalmars-d-learn wrote: [...] > * Does .until() make a copy of original string? And GC then will take > care of it?
No, it's one of the lazy range functions that lazily evaluates the string and does not allocate. > * So many ways to do simple C printf("%s", (char*)buf)... I am feeling > like Buridan's ass D strings are different from C strings. Although D *can* handle C strings, it should not be surprising there's a bit of friction. The simplest way to handle a C string from D is just to use .fromStringz: import std.string : fromStringz; char *buf = some_c_function(); writeln(buf.fromStringz); Note that fromStringz is @nogc, since it only takes a slice of the C string and does not copy anything. So it should be good even for GC-phobic code. T -- What do you get if you drop a piano down a mineshaft? A flat minor.