c将printf与wprintf(或cout与wcout)混合
发布时间:2020-12-16 06:04:33 所属栏目:百科 来源:网络整理
导读:我知道你不应该使用printf,cout和wprintf来混合打印,但是很难找到一个很好的答案,为什么这样做是可能的.问题是我使用打印与printf的外部库,我自己使用wcout.如果我做一个简单的例子它工作正常,但从我的完整的应用程序,它根本不打印printf语句.如果这真的是一
我知道你不应该使用printf,cout和wprintf来混合打印,但是很难找到一个很好的答案,为什么这样做是可能的.问题是我使用打印与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); 实际上做了这个伎俩…(注意错误,而不是我所期望的真正的…),唯一困扰我的是,我不明白为什么和如何弄清楚:-( 解决方法
您应该能够混合使用,但它们通常使用单独的缓冲机制,因此它们彼此重叠:
printf("hello world"); cout << "this is a suprise"; 可以导致:
您不能提供足够的信息来诊断您的应用程序中的printf()问题,但我怀疑您有多个c运行时(代码中的一个,printf()代码中的一个),并且存在冲突. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |