c将printf与wprintf(或cout与wcout)混合

我知道你不应该使用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";

可以导致:

hellothis is a suprise world

您不能提供足够的信息来诊断您的应用程序中的printf()问题,但我怀疑您有多个c运行时(代码中的一个,printf()代码中的一个),并且存在冲突.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...