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!


You should always carefully read the description and Notes ;-)

Note:
Each front will not persist after popFront is called, so the caller must copy its contents (e.g. by calling to!string) when retention is needed. If the caller needs to retain a copy of every line, use the byLineCopy function instead.

http://dlang.org/phobos/std_stdio.html#.File.byLine

Unfortunately you are not the first one who bumped into this problem and this non intuitive behavior of byLine is heavily disputed.

Reply via email to