首页 > 后端开发 > C++ > 为什么我无法在 C 中复制'stringstream”对象?

为什么我无法在 C 中复制'stringstream”对象?

Mary-Kate Olsen
发布: 2024-12-18 02:40:11
原创
713 人浏览过

Why Can't I Copy a `stringstream` Object in C  ?

为什么禁止复制 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板