我想创建一个iostream
适配器类,它可以让我即时修改写入流或从流中读取的数据。适配器本身应该iostream
允许对第三方代码真正透明。
StreamEncoder
派生自的类的示例std::ostream
:
// External algorithm, creates large amounts of log data
int foo(int bar, std::ostream& logOutput);
int main()
{
// The target file
std::ofstream file("logfile.lzma");
// A StreamEncoder compressing the output via LZMA
StreamEncoder lzmaEncoder(file, &encodeLzma);
// A StreamEncoder converting the UTF-8 log data to UTF-16
StreamEncoder utf16Encoder(lzmaEncoder, &utf8ToUtf16);
// Call foo(), but write the log data to an LZMA-compressed UTF-16 file
cout << foo(42, utf16Encoder);
}
据我所知,我需要创建一个新basic_streambuf
的派生类并将其嵌入到basic_ostream
子类中,但这似乎相当复杂。
有没有更简单的方法可以做到这一点?