Я знаю, что вам не следует смешивать печать с printf, cout и wprintf, wcout, но трудно найти хороший ответ, почему и если это возможно, обойти это. Проблема в том, что я использую внешнюю библиотеку, которая печатает с помощью printf, а моя собственная использует wcout. Если я делаю простой пример, он работает нормально, но из моего полного приложения он просто не печатает операторы printf. Если это действительно ограничение, тогда будет много библиотек, которые не могут работать вместе с широкими печатными приложениями. Любое понимание этого более чем приветствуется.
Обновление:
Я сварил это до:
#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;
}
Так что я думаю, что это может быть проблема с промывкой, но она все еще выглядит странно для меня, я должен проверить это.
Обновление -> Обойти:
Прежде всего, та же проблема возникает с wprintf. Но я обнаружил, что добавление:
std::ios::sync_with_stdio(false);
на самом деле сделал трюк ... (заметьте ложь, а не то, что я ожидал бы правдой ...), единственное, что меня беспокоит, это то, что я не понимаю, почему и как это выяснить: - (