I have never understood what the problem with using operator<< is.
"livable" means possible to bear, endurable, tolerable. Not too good,
not too enjoyable, but not a real problem. You really haven't read
such points before several times? It gets too far from OP who was more
interested in input it felt ... but let me try then.
iostreams addresses the task to format the text output not that
elegantly. Sort of simplistic, cryptic and verbose outcome. printf()
family ... (especially the ones from gettext package) feel better. It
is still useful, just cumbersome and time consuming to get a text to
look natural. Also the code looks not too pretty after that.
Fine for plain pre-made "Hello world" messages, but it is rare that
you do not want to display anything calculated runtime inside of the
output. Fine with texts not meant to be internationalized, but even
selling only to Finland for example they likely expect English +
Finnish + Swedish. Might be useful for texts not meant for humans to
be read ... but there are other gotchas, i really prefer binary or XML
at such places. Boost::format repairs majority of annoyances but it
also turns majority of formatting functionality in iostreams into
obsolete. Boost is unfortunately not always available, even getting it
to compile for some smaller device that has limited console might be
troublesome. As irony of fate ... good formatting is more desirable
for such things.
How many times have you needed the bit shift operator on an I/O
statement? (And even if in a one-in-a-million case you would need it,
what would be the problem with using parentheses to disambiguate?)
Rarely. The operator itself is fine, no problems at all there.