将Ostream传递到Istream
Pass Ostream into Istream
我有一个函数将数据输出到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
可能是更好的选择。
相关文章:
- 需要从 istream 和 ostream 派生 iostream
- 逗号在重载 ostream 和 istream 在结构中分开
- 为什么 Clang std::ostream 写一个 std::istream 无法读取的双精度?
- C++ 模板类无法修复 ostream 和 istream 函数
- C++使 ostream 和 istream 运算符过载
- 尝试重载时'ostream'和'istream'错误C++
- 如何从 istream、ostream 正确继承我的类?
- C++,错误:" no operator "== " matches these operands ",ostream/istream
- 将带有C++的二进制文件从 istream 复制到 ostream 并不总是正确的
- 带有 ostream 和 istream 的 C++ 向量
- 带有数组的 istream / ostream 参数
- C++ istream >> 和 ostream << 错误
- 用于使用 istream/ostream 传输消息的类似网络协议
- Streambuf、Ostream、Ostreambuf、iStream、ISTREAMBUF 和相关迭代器
- 为什么我们需要在重载>>和<<运算符时返回对 istream/ostream 的引用?
- 为什么不能重新分配给对 istream / ostream 的引用
- 为什么 istream/ostream 很慢
- istream (ostream) vs. bool
- istream >> ostream << 运算符重载与 * 指针
- 为什么在istream / ostream的IO函数中取消一个pthread会设置坏位?