From: Ed Brey (brey_at_[hidden])
Date: 2003-06-04 15:18:42
Paul A. Bristow wrote:
>> cout <<
>> "My first line" "\n"
>> "My second line";
> Are you sure that this is more efficient?
> cout <<
> "My first line" << endl <<
> "My second line";
> has proven LESS efficient and I suspect the flush caused by
> encountering \n will have the same effect. Of course, the
> differences are tiny in practice.
I just did a test using VC7.1: '\n' did not trigger a flush. Assuming that is the correct behavior, that does indeed make the string concatenation method the most efficient.
> I view the newl as much clearer. And the concept that endl actually
> writes the buffered output doesn't seem too complicated.
> As a non-C programmer, "\n" looks plain nasty to me :-(
It looks like the intent of newl is to take the place of '\n' is the C++ language, as a way to improve C++ from a syntactical standpoint. I think that such a goal should be handled with an overall view of the language, rather than with just an isolated view of I/O streams. The larger question would address how the '\n' replacement interacts with strings, including string concatenation and operator overloading.
I'd say it would be an interesting issue to raise on comp.lang.c++, except for one thing: it would be hard to demonstrate how one abbreviation is better than another and worth a language change, especially when complicated by the precipitating changes required to harmonize '\t', '\r', etc.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk