我有一个函数将数据输出到ostream对象中,还有一个构造函数,它以完全相同的格式从istream对象初始化类。
std::ostream& operator<<(std::ostream &os, const Matrix &m) {
// Output to os
}
然后
Matrix::Matrix(std::istream& in) {
// Read from in to construct the object
}
那么如何将第一个函数的输出推送到第二个函数的输入呢?我尝试了很多东西,主要是反复试验,但完全迷失了(即甚至不确定要使用哪种流类型)。谢谢
由于您同时需要输入和输出,因此您需要继承std::istream
和std::ostream
的 std::iostream
导数。听起来您想使用内存缓冲区,而不是文件缓冲区,因此类型 std::stringstream
的对象可以解决问题。在将其用于输入之前,请务必调用stream.seekg(0, std::ios::beg)
将流"倒带"回开头。
此代码也可以重用于文件 I/O,只需将std::fstream
传递给相应的函数即可。但是,由于写作和阅读将分开,std::ofstream
和std::ifstream
可能是更好的选择。