title: cstdio streams vs iostream streams?
body: <p>I just learned of the existence of the <code>ios_base::sync_with_stdio</code> function, which basically allows you to turn off (or on if you already turned it off) the synchronization between <code>iostream</code> streams that are used in C++ and the <code>cstdio</code> streams that are part of Standard C. </p>
  
  <p>Now, I always thought that <code>stdout</code>, <code>stderr</code> and <code>stdin</code> in C were essentially wrapped in a set of objects in C++ in the iostreams classes.  But if they have to be <em>synchronized</em> with each other, this would indicate that C++'s <code>iostream</code> classes are <em>not</em> a wrapper around C's  <code>stdin</code> etc.  </p>
  
  <p>I'm quite confused by this?  Can someone clarify how C++'s iostream and C's stdio are <em>different</em> things that do exactly the same thing, just at a different level of abstraction? I thought they were the <em>same thing</em>!?</p>
  
  <p>How it is that they have to be synchronized?  I always thought they were the same thing, one wrapping the other, essentially.</p>