std :: ofstream中的自定义streambuffer

时间:2015-06-10 15:27:18

标签: c++ io streambuf

我知道在std::ostream中,我可以使用自定义streambuf通过在构造函数中说明:

std::ofstream temp;
temp.open("file.txt", std::ios_base::in);
std::ostream example(temp.rdbuf());

以及之后设置(前两行相同,但最后一行更改为:

std::ostream example;
example.rdbuf(temp.rdbuf());

我的问题是:如何在std::ofstream中执行此操作?我希望能够覆盖我自己的自定义类中xsgetn中实现的方法xsputnstd::streambuf,并在我的ofstream中使用它,但是,我自己写的不够自定义ofstream我不确定如何这样做。

1 个答案:

答案 0 :(得分:0)

具体的文件流类有自己的rdbuf()方法,它接受0个参数,隐藏从虚拟基础rdbuf()继承的另一个std::basic_ios方法。限定名称以查找基类方法应该有效:

std::ofstream ofs;
ofs.basic_ios<char>::rdbuf(example.rdbuf());