Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重新定义阻塞';s rdbuf()是clog的原始rdbuf()和日志文件的原始rdbuf()的T形三通吗? 是否有一个例子来说明如何重新定义C++内置阻塞,而不是有一个新的关联的RDBuffe(),它被处理成OFFASH对象的原始CULG、RDBUFF(和RDBUFF)和磁盘上的日志文件。_C++_Stream_Tee_Clog - Fatal编程技术网

如何重新定义阻塞';s rdbuf()是clog的原始rdbuf()和日志文件的原始rdbuf()的T形三通吗? 是否有一个例子来说明如何重新定义C++内置阻塞,而不是有一个新的关联的RDBuffe(),它被处理成OFFASH对象的原始CULG、RDBUFF(和RDBUFF)和磁盘上的日志文件。

如何重新定义阻塞';s rdbuf()是clog的原始rdbuf()和日志文件的原始rdbuf()的T形三通吗? 是否有一个例子来说明如何重新定义C++内置阻塞,而不是有一个新的关联的RDBuffe(),它被处理成OFFASH对象的原始CULG、RDBUFF(和RDBUFF)和磁盘上的日志文件。,c++,stream,tee,clog,C++,Stream,Tee,Clog,这样做的目的是让代码在整个过程中使用std::clog,但同时将其发送到默认的clog目标以及磁盘上的日志文件 谢谢 -William您必须编写一个自定义streambuf派生类。让它吐出数据到您的ofstream的rdbuf和您的原始clog rdbuf 编写自定义streambuf的一般示例: 可以按如下方式存放新的流缓冲区: // grab buffer for clog std::streambuf* oldClogBuf = std::clog.rdbuf(); // create

这样做的目的是让代码在整个过程中使用std::clog,但同时将其发送到默认的clog目标以及磁盘上的日志文件

谢谢


-William

您必须编写一个自定义streambuf派生类。让它吐出数据到您的ofstream的rdbuf和您的原始clog rdbuf

编写自定义streambuf的一般示例:

可以按如下方式存放新的流缓冲区:

// grab buffer for clog
std::streambuf* oldClogBuf = std::clog.rdbuf();

// create custom buffer which feeds both clog and an ofstream
CustomBuffer* customBuf = new CustomBuffer( oldClogBuf );

// stash custom buffer
std::clog.rdbuf( customBuf );

...do stuff...

// restore original clog buffer
std::clog.rdbuf( oldClogBuf );

通过使用RAII习惯用法来管理缓冲区切换,您可以使整个过程更加健壮。

请不要重复同样的问题: