&gt; How is iostream any better than [&lt;star&gt;]printf?<p>What consistent mechanism do you use to printf an instance of an arbitrary user-defined type?<p>With ostream, you implement<p><pre><code>  ostream&amp; operator&lt;&lt;(ostream&amp;, const Class&amp;)
</code></pre>
and you&#x27;re done.<p>with printf, you have to have a convention and remember to stick to it. (Do I call .toString(), .stringize(), .getString()... ??)<p>For one-off things, printf is <i>great</i>. You take it from me when you pry it from my goddamn cold, dead, hands. However, for real work io*stream are rather nice.