c++ Mixing printf with wprintf (or cout with wcout)
<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>
