我有一个将数据输出到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
}
那么如何将第一个输出推送到第二个输入?我已经尝试了很多东西,主要是试验和错误,但我完全丢失了(即使不确定要使用哪种流类型)。感谢
答案 0 :(得分:4)
由于您需要输入和输出,因此需要std::iostream
的衍生产品,它继承std::istream
和std::ostream
。听起来你想要使用内存缓冲区而不是文件缓冲区,因此std::stringstream
类型的对象可以实现这一目的。在将数据流用作输入之前,请务必致电stream.seekg(0, std::ios::beg)
将“回滚”流回到开头。
此代码也可以重复用于文件I / O,只需将std::fstream
传递给相应的函数即可。但由于写作和阅读会被分开,std::ofstream
和std::ifstream
可能是更好的选择。