将Ostream传递给Istream

时间:2013-09-12 02:24:41

标签: c++ stream

我有一个将数据输出到ostream对象的函数,以及一个以完全相同的格式从istream对象初始化类的构造函数。即

std::ostream& operator<<(std::ostream &os, const Matrix &m) {
    // Output to os
}

然后

Matrix::Matrix(std::instream& in) {
    // Read from in to construct the object
}

那么如何将第一个输出推送到第二个输入?我已经尝试了很多东西,主要是试验和错误,但我完全丢失了(即使不确定要使用哪种流类型)。感谢

1 个答案:

答案 0 :(得分:4)

由于您需要输入和输出,因此需要std::iostream的衍生产品,它继承std::istreamstd::ostream。听起来你想要使用内存缓冲区而不是文件缓冲区,因此std::stringstream类型的对象可以实现这一目的。在将数据流用作输入之前,请务必致电stream.seekg(0, std::ios::beg)将“回滚”流回到开头。

此代码也可以重复用于文件I / O,只需将std::fstream传递给相应的函数即可。但由于写作和阅读会被分开,std::ofstreamstd::ifstream可能是更好的选择。