string mixup problem with stdin.byLine
Meta via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Aug 8 09:30:39 PDT 2016
On Monday, 8 August 2016 at 07:09:55 UTC, torea wrote:
> On Monday, 8 August 2016 at 05:17:24 UTC, Dave Akers wrote:
>> I do believe your problem is with the line...
>> On Monday, 8 August 2016 at 02:44:20 UTC, torea wrote:
>>> string cleanLine = strip( cast(string)line );
>> It's casting a char[] to and immutable(char)[], causing the
>> mutable buffer from byLine to be used as a string. what you
>> want is...
>> string cleanLine = strip( to!string(line) );
>> which should make a copy of the mutable buffer.
>>
>> I still a beginner at D but I think that will fix your problem.
>>
>> -Dave
>
> Problem fixed!!
> Thank you very much for the solution and the explanation!
Alternatively you can use std.stdio.byLineCopy and don't need to
add the `to!string`. If you are calling to!string on ever line
there will probably be no performance difference, but if you are
not, such as only calling to!string on every *second* line or
something like that, you should stick with byLine and calling
to!string when needed.
More information about the Digitalmars-d-learn
mailing list