[LC++]Default Arguments
Carlo Wood
carlo at alinoe.com
Sat May 11 23:57:05 UTC 2002
On Sat, May 11, 2002 at 01:22:04AM -0400, Paul M Foster wrote:
> > void foo() { std::cout << x->foo << '\n'; }
>
> In that case, shouldn't it be:
>
> void foo() { std::cout << x->foo << endl; }
No, there is no reason to flush the output
(stream) every line.
Please note that if you use <stdio.h> (and printf etc)
together with streams, then you need to synchronize
the two. This synchronization is done (at least till
3.0.4) by flushing per *character*. This causes a
dramatic slow down of C++ applications.
You should add
std::ios::sync_with_stdio(false);
at the start of main in order to stop this per-character
flushing as well.
(see also http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#8)
However, even after that I see no reason to flush per-line
in *most* cases. Especially together with a non-blocking
library like libcw you'd _never_ want to use endl even!
(in example http://libcw.sourceforge.net/io/dbstreambuf.html#avoid)
--
Carlo Wood <carlo at alinoe.com>
More information about the tuxCPProgramming
mailing list