Christopher Wright wrote:
Georg Wrede wrote:
Readln returns a string which contains the line terminator.
Is there a grand reason for this?
Currently there are a few drawbacks with this. The naive user doesn't
expect it, and the seasoned user has to keep stripping it. And then he
has to search the docs (or get hold of other OSs) to determine what
terminator to expect on other systems.
And it can't really be a speed optimization either, because to do
anything useful with a string, you have to strip the terminator anyway
at some point.
By default, tango does not exhibit this behavior. If you wish, you can
include newlines:
auto str = Cin.copyln; // no newline in str
auto str2 = Cin.copyln(true); // has system-dependent newline
Now this is more like it. The default should really be (in Phobos too)
to not return the newline. (Hint to Walter: Tango is for users, by
users, and if they have no newline as the default, it should be
considered a serious hint as to what the programmer prefers.)
If one is really interested in doing some file manipulation which might
*preserve* varying line terminators in files that might have been edited
in both linux and dos, then he should use "the non-default" line
reading, like the Cin.copyln(true) above. Not that I'd see the point.
I'm certain that the overwhelming majority of cases where one reads
lines (_especially_ from the console, but from text files, too), one
just wants the contents of the string.