3

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

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

接着

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

那么如何将第一个函数的输出推送到第二个函数的输入呢?我尝试了很多东西,主要是反复试验,但完全迷失了(即甚至不确定要使用哪种流类型)。谢谢

4

1 回答 1

5

由于您需要输入和输出,因此您需要一个std::iostream同时继承std::istream和的导数std::ostream。听起来您想使用内存缓冲区,而不是文件缓冲区,因此类型的对象可以解决问题std::stringstream。只需确保在stream.seekg(0, std::ios::beg)将流用于输入之前调用以将流“倒回”到开头即可。

该代码也可以用于文件 I/O,只需传递std::fstream给相应的函数即可。但既然写和读会分开,std::ofstream可能std::ifstream是更好的选择。

于 2013-09-12T03:00:11.733 回答