Printing a C "string" with write(f)ln

Jakob Ovrum via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Feb 9 09:02:28 PST 2016


On Tuesday, 9 February 2016 at 16:52:09 UTC, Gary Willoughby 
wrote:
> On Tuesday, 9 February 2016 at 12:50:27 UTC, Jakob Ovrum wrote:
>> writefln et al sensibly does *not* assume that a pointer to 
>> char is a C string, for memory safety purposes.
>>
>> Print the result of std.string.fromStringz[1] instead:
>>
>> writeln(fromStringz(pString));
>> writefln("%s", fromStringz(pString));
>>
>> [1] http://dlang.org/phobos/std_string#fromStringz
>
> Or use `to` like this:
>
> import std.conv;
> writefln("%s", pString.to!(string));

to!string behaving like that was a poor design choice[1]. Please 
use fromStringz.

[1] https://github.com/D-Programming-Language/phobos/pull/1607



More information about the Digitalmars-d-learn mailing list