Je sais que vous ne devriez pas mélanger l'impression avec printf, cout et wprintf, wcout, mais avez du mal à trouver une bonne réponse et pourquoi il est possible de contourner. Le problème est que j'utilise une bibliothèque externe qui imprime avec printf et la mienne utilise wcout. Si je fais un exemple simple, cela fonctionne très bien, mais de mon application complète, il n'imprime simplement pas les instructions printf. Si c'est vraiment une limitation, alors il y aurait beaucoup de bibliothèques qui ne peuvent pas travailler ensemble avec de larges applications d'impression. Toute idée à ce sujet est plus que bienvenue.C++ Mélanger printf avec wprintf (ou cout avec wcout)
Mise à jour:
Je fait bouillir jusqu'à:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <readline/readline.h>
#include <readline/history.h>
int main()
{
char *buf;
std::wcout << 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<<buf<< std::endl;
if (buf[0]!=0)
add_history(buf);
}
free(buf);
return 0;
}
Je pense que oui, il pourrait être un problème de rinçage, mais il semble encore étrange pour moi, je dois vérifier sur le sujet.
Mise à jour -> Contournez:
Tout d'abord, le même problème se pose avec wprintf. Mais je trouve que l'ajout:
std::ios::sync_with_stdio(false);
a effectivement fait l'affaire ... (fausse note et non pas comme j'attendre vrai ..), la seule chose qui me dérange, que je ne comprends pas pourquoi et comment le comprendre :-(
je fait bouillir à ce qui suit: #include #include #include \t #include #include int main ( { char * buf; std :: wcout << std :: endl;/* AJOUT DE CETTE LIGNE FAIT PRINTF VANISH !!! */ rl_bind_key ('\' t, rl_abort); // désactiver tandis que l'auto-complétion ((buf = readline ("my-commande:"!)) = NULL) { if (strcmp (BUF, "quitter") == 0) pause; std :: wcout << buf << std :: endl; Si (buf [0]! = 0) add_history } libre (buf); return 0; } –
désolé mon erreur de toute évidence ne pas être utilisé avec des extraits de code. –
Pourquoi les réponses se concentrent sur le mélange de 'cout' et' printf', alors que la question est de mélanger 'cout' et' wcout' ... – kennytm