Newbie problem

Roger Stokes rs at rogerstokes.free-online.co.uk
Thu Jun 20 01:01:23 PDT 2013


Adam, many thanks for your helpful reply.

On Wednesday, 19 June 2013 at 19:53:08 UTC, Adam D. Ruppe wrote:
> On Wednesday, 19 June 2013 at 19:14:58 UTC, Roger Stokes wrote:
>> and got this compiler diagnostic:
>
> Oh, I thought you were writing to a socket. Yeah, to a 
> different thread, D will complain if you don't make a sharable 
> copy. So you do want to idup it...
>
>
>> [47, 47, 32, 101, 120, 97, ....
>>
>> ....
>> The numbers 47, 47, 32, etc look like the ASCII indexes of the 
>> characters
>> which should be in the output,  not the characters themselves!
>
>
> The reason here is this line:
>>      stdout.write(buffer);
>
> The write function changes the format based on the type of 
> input. Since the input here is a ubyte[], it doesn't realize it 
> is a printable string and prints the numeric values of a byte 
> array instead.
>
> Try stdout.write(cast(string) buffer)) and you should get what 
> you expect. Another potential change would be to use 
> stdin.byLine instead of stdin.byChunk. byLine returns char[], 
> one line at a time, but it cuts off the newline character (if I 
> remember correctly) and can complain if the input isn't valid 
> UTF-8, so it wouldn't work right for a generic file copy 
> function.



More information about the Digitalmars-d-learn mailing list