title: c++ Mixing printf with wprintf (or cout with wcout)
body: <p>I know you should not mix printing with printf,cout and wprintf,wcout, but have a hard time finding a good answer why and if it is possible to get round it. The problem is I use a external library that prints with printf and my own uses wcout. If I do a simple example it works fine, but from my full application it simply does not print the printf statements. If this is really a limitation, then there would be many libraries out there which can not work together with wide printing applications. Any insight on this is more than welcome.</p>
  
  <p>Update :</p>
  
  <p>I boiled it down to :</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;iostream&gt;
  
  #include &lt;readline/readline.h&gt;
  #include &lt;readline/history.h&gt;
  
  int main()
  {
      char *buf;
  
      std::wcout &lt;&lt; std::endl; /* ADDING THIS LINE MAKES PRINTF VANISH!!! */
  
      rl_bind_key('\t',rl_abort);//disable auto-complete
  
      while((buf = readline("my-command : "))!=NULL)
      {
          if (strcmp(buf,"quit")==0)
              break;
  
          std::wcout&lt;&lt;buf&lt;&lt; std::endl;
  
          if (buf[0]!=0)
              add_history(buf);
      }
  
      free(buf);
  
      return 0;
  }
  </code></pre>
  
  <p>So I guess it might be a flushing problem, but it still looks strange to me, I have to check up on it.</p>
  
  <p>Update -> Work around :</p>
  
  <p>First of all, the same problem arise with wprintf. But I found that adding :</p>
  
  <pre><code>std::ios::sync_with_stdio(false);
  </code></pre>
  
  <p>actually did the trick...(note false and not as I would expect true..), the only thing that bothers me, is that I don't understand why and how to figure it out :-(</p>