print ubyte[] as (ascii) string

eugene dee0xeed at gmail.com
Fri Jan 7 20:11:55 UTC 2022


On Sunday, 2 January 2022 at 15:13:06 UTC, Paul Backus wrote:
> On Sunday, 2 January 2022 at 09:15:32 UTC, eugene wrote:
>>
>> ```
>> p1.d(9): Error: cannot cast expression `until(b[], '\x0a', 
>> Flag.yes)` of type `Until!("a == b", ubyte[], char)` to 
>> `char[]`
>>
>> ```
>
> Here's a working version:
>
> ```d
> import std.stdio;
> import std.string;
> import std.algorithm : until, map;
> import std.conv : to;
>
> void main() {
>     ubyte[8] b = [0x68, 0x65, 0x6C, 0x6C, 0x6F, 0x0A, 0x00, 
> 0x00];
>     /* "hello\n\0\0" */
>     writefln("'%-(%s%), world'", b[].until('\n').map!(to!char));
> }
> ```
>
> This code uses `map!(to!char)` to convert the elements of the 
> range from `ubyte` to `char`, then uses a `%-(...%)` format 
> specifier to print out each element of the range using the 
> format string inside the parentheses (in this case, `%s`).

Well, just a Gross!
But I am not a fun of functional programming style :)
(sorry for replying late)


More information about the Digitalmars-d-learn mailing list