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. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost