Reading file by line, weird result
Marco Leise
Marco.Leise at gmx.de
Fri Dec 27 02:36:55 PST 2013
Am Fri, 27 Dec 2013 10:24:15 +0000
schrieb "Dfr" <deflexor at yandex.ru>:
> On Friday, 27 December 2013 at 09:44:22 UTC, lomereiter wrote:
> > The solution is to append `line.dup` instead of `line`.
> >
> > I guess this note in the documentation should be marked red:
> >> Each front will not persist after popFront is called, so the
> >> caller must copy its contents (e.g. by calling to!string) if
> >> retention is needed.
>
> Thank you, .dup helped.
To avoid allocating new memory for each line of text, byLine
reuses the buffer. You are supposed to make a duplicate if you
plan to keep it. It would be different if you had:
string s;
foreach (line; frange) {
s ~= line
}
in which case, the _contents_ of the line buffer, not the buffer
itself are appended to the string s.
--
Marco
More information about the Digitalmars-d-learn
mailing list