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