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