为什么禁止复制 Stringstream
C 中不允许复制 stringstream 对象,因为它们的复制构造函数是私有化的。这适用于所有流类型,包括 stringstream、istream、ostream 和 iostream。
流不仅仅是可以复制的容器。它们充当数据流动的管道,将源连接到接收器。与容器不同,流不保存数据,而是促进数据传输。
将流与传输数据的管道进行类比。创建流的副本类似于创建连接到同一数据源的附加管道。但是,由于数据已被原始流消耗,因此副本不会接收新数据。
说明:
int main() { std::stringstream s1("This is my string."); std::stringstream s2 = s1; // error, copying not allowed }
在此示例中,尝试将 s1 复制到 s2 会导致错误,因为它会创建与已耗尽的数据源的重复连接。
虽然禁止复制流,但创建引用对他们来说仍然是允许的。这允许多个代码实体访问相同的底层数据源,而无需重复。
std::istream copy_cin = std::cin; //error std::istream & ref_cin = std::cin; //ok
此外,可以创建一个使用与现有流相同的底层缓冲区的新流对象。
以上是为什么我无法在 C 中复制'stringstream”对象?的详细内容。更多信息请关注PHP中文网其他相关文章!