我一直在想,堵塞的目的是什么?据我所知,clog与cerr相同,但具有缓冲功能,因此效率更高。通常stderr与stdout相同,因此clog与cout相同。这对我来说似乎很la脚,所以我认为我一定会误会它。如果我将日志消息发送到同一位置,而将错误消息发送到同一位置(也许在/var/log/messages中),那么我可能不会写太多(因此使用non命令不会造成太多损失)缓冲的cerr)。根据我的经验,我希望日志消息是最新的(非缓冲的),因此我可以帮助您查找崩溃(因此,我不想使用缓冲的木c)。显然我应该一直使用cerr。

我希望能够重定向程序内部的阻塞。重定向cerr很有用,这样当我调用库例程时,我可以控制cerr和clog的去向。一些编译器可以支持吗?我刚刚检查了DJGPP,并将stdout定义为FILE结构的地址,因此执行诸如“stdout = freopen(...)”之类的操作是非法的。

  • 是否可以重定向阻塞,cerr,cout,stdin,stdout和/或stderr?
  • 阻塞和cerr之间唯一的区别是缓冲吗?
  • 我应该如何实现(或找到)更强大的日志记录功能(请链接)?
  • 最佳答案



    是。您需要 rdbuf 函数。

    ofstream ofs("logfile");
    cout.rdbuf(ofs.rdbuf());
    cout << "Goes to file." << endl;
    



    据我所知,是的。

    10-07 15:34