首页 > 其他分享 >流是什么?什么叫重定向?

流是什么?什么叫重定向?

时间:2024-03-18 18:31:28浏览次数:21  
标签:输出 重定向 什么 ios 流是 istream 流类 输入 cout

文章目录

什么叫流?

在这里插入图片描述

C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。

就像水流一样,从一端流向另外一端,是有方向有起点和终点的动态流动的过程。

如何从流中提取和向流中插入数据呢?

运算符 <<和>>的重载

通常我们会将重载<< 和 >> 运算符(overloaded)以用于输入/输出流操作,也就是说,我们之所以能用cout<<、cin>>输出输入就是因为重载了<<和>>运算符。

<<运算符用于输出,即流插入
<<将右侧的数据发送到左侧的输出流,cout<<"hello"的意思就是将字符串”hello“插入到输出流cout中,而cout的默认目标是输出到显示器。数据往显示器或者控制器的方向流动

>>运算符用于输入,即流提取
>>将左侧的数据发送到右侧的变量中,cin>>num的意思就是从cin流中提取数据到变量num中,而cin的流
来源默认是键盘。数据从键盘到变量流动

重定向

重定向通常指的是 改变标准输入、标准输出或标准错误输出流的方向

理解输出输出重定向
本来cout将数据输出到显示器,此时显示器就是数据的目的地。如果将这个输出的目的地修改为其它外设或文件,我们就把这种 修改输出的方向的行为叫做输出重定向。同理,输入重定向就是修改数据的来源,比如将数据的来源地从键盘修改为某个其它文件。

C++有哪些流类

我们知道C++的cout、cin是通过标准库提供的 <iostream> 头文件中的输入输出流类实现的。也就是说,cout和cin本质上就是某个类的实例化对象。
在cplusplus上我们可以看到
在这里插入图片描述

ios_base类

在这里插入图片描述

ios_base是所有流类的基类(不仅仅是输入输出流),它定义了流的基本特性和操作,例如条件状态、缓冲区管理等。ios是ios_base的派生类,提供了输入/输出操作,如">>“和”<<"操作符。

ios类

在这里插入图片描述

ios是基流类,是所有输入/输出流类的基类。是标准库中定义的一个抽象基类,不能被直接实例化。ios基类为所有流定义了基本的输入/输出操作,例如缓冲区管理、条件状态的处理等。
由于ios是抽象基类,因此不能直接创建ios类型的对象。标准库提供了从ios派生的若干子类,如istreamostream,用于实现具体的输入/输出功能。
ios类的四个直接派生类输入流类istream、输出流类ostream、文件流类fstreambase、串流类strstreambase

在这里插入图片描述

istream、ostream类以及iostream库

在这里插入图片描述

istream、ostream是分别输入流和输出流,是ios类的派生类。
istream类定义了对设备或者buffer的操作方法,包含read、readsome、>>等读取操作。
ostream类定义了若干输入输出函数,主要用于错误处理、流的刷新以及流输入输出方式的控制。 iostream是C++标准库中的一个联合了istream和ostream类的输入输出流类库

常用流类列表

在这里插入图片描述
上图出自b站《郑莉课堂》
在这里插入图片描述

标签:输出,重定向,什么,ios,流是,istream,流类,输入,cout
From: https://blog.csdn.net/qq_62987647/article/details/136807098

相关文章

  • 【教程】为什么要为 App 应用加固 ?如何为 App 应用加固 ?
    ​一:为什么要为App应用加固来看下腾讯开放平台官方的解释说明若应用不做任何安全防护,极易被病毒植入、广告替换、支付渠道篡改、钓鱼、信息劫持等,严重侵害开发者的利益。App加固后,可以对应用进行安全防护,防止应用分发后,被反编译、调试、盗版、破解、二次打包等威胁,维护开发......
  • 在Linux中,SELinux的作用是什么?如何临时和永久地更改SELinux上下文?
    SELinux(Security-EnhancedLinux)在Linux系统中扮演着至关重要的安全角色,它通过实施强制访问控制(MandatoryAccessControl,MAC)策略来增强系统的安全性。不同于传统的用户和组权限管理机制(即自主访问控制DAC),SELinux提供了一种细粒度的安全模型,允许管理员为每个进程、文件、目录和......
  • 谈谈我对微服务架构的理解&微服务架构有什么作用
    一、谈谈我对微服务架构的理解 微服务架构,一种在现代化软件开发中广泛应用的架构模式,其核心理念在于将大型的、复杂的应用程序拆分为一系列小型的、松耦合的服务。每个服务都围绕着特定的业务功能或领域组件进行构建,并独立地运行在自己的进程中。这些服务通过轻量级的通信机......
  • 亚马逊卖家什么情况下会用到erp?他们最关注erp的哪些功能?
    ERP,用于协调和整合企业各个部门和业务流程。它的作用是通过整合、自动化和标准化各种关键业务流程和数据,提高企业的效率、准确性和可靠性,实现资源的有效管理和协调。所以当你公司的跨部门协作比较多,数据内容也比较多,数据处理步骤也不少,流程冗杂的情况下,就可以考虑用ERP去减少......
  • 监控微信的软件,什么软件可以监控微信聊天记录
    有的老板会在后台发文:“能监控聊天记录么?”“聊天记录删除了能找回么”“监控聊天记录的安装包有吗”......可见很多老板对员工的工作时的工作状态都不太放心。针对监控微信这个事情,我们应该理性分析看待。首先,需要明确的是,监控员工工作微信是一种有争议的做法。尽管......
  • 什么是企业微电网智慧能源解决方案EMS3.0?
    袁媛ACRELYY安科瑞电气股份有限公司企业微电网系统解决方案服务商公司成立于2003年,于2012上市(股票代码:300286),集研发、生产、销售及服务于一体,是一家为企业微电网提供能效管理和用电安全解决方案的高科技股份制企业。公司具备从云平台软件到终端元器件的产品生态体系,目前......
  • 好奇: windows10+都可以运行多个linux子系统了,为什么不支持运行多个windows子系统呢?
    简介一般容器都是特指基于linux的容器,其实windows也是有自己的容器系统镜像的,就是nanoserver镜像么,但是没有关于桌面windows的容器镜像,倒是有一些server的镜像.不过docker毕竟是docker,微软可以做WSL2,还可以开很多个实例,win10+有一个应用"沙箱"(sandbox)看起来是一个......
  • Serializable是什么,为什么要实现Serializable接口?
    什么是Serializable接口什么是序列化?为什么要序列化对象什么情况下需要序列化?为什么要定义serialversionUID变量序列化的使用关于serialVersionUID定义实体类的时候会先定义一个BaseDomain类用来实现Serializable接口什么是Serializable接口一个对象序列化的接口,一个类......
  • 为什么ASP.NET Core的路由处理器可以使用一个任意类型的Delegate
    毫不夸张地说,路由是ASP.NETCore最为核心的部分。路由的本质就是注册一系列终结点(Endpoint),每个终结点可以视为“路由模式”和“请求处理器”的组合,它们分别用来“选择”和“处理”请求。请求处理器通过RequestDelegate来表示,但是当我们在进行路由编程的时候,却可以使用任意类型的De......
  • Knative的tag to digest是什么?
    我将集群的kubernetes版本更新到1.29,knative版本更新到1.13后,部署knativeservice总是失败:failedtoresolveimagetodigest,在折腾一段时间后解决了这个问题,那么tagtodigest是什么,又该如何解决?Tagtodigest是什么?参考https://knative.dev/docs/serving/tag-resolution/......