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

简介: 流是什么?什么叫重定向?

什么叫流?

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派生的若干子类,如istream和ostream,用于实现具体的输入/输出功能。

ios类的四个直接派生类:输入流类istream、输出流类ostream、文件流类fstreambase、串流类strstreambase。

istream、ostream类以及iostream库

istream、ostream是分别输入流和输出流,是ios类的派生类。

istream类定义了对设备或者buffer的操作方法,包含read、readsome、>>等读取操作。

ostream类定义了若干输入输出函数,主要用于错误处理、流的刷新以及流输入输出方式的控制。 iostream是C++标准库中的一个联合了istream和ostream类的输入输出流类库。

常用流类列表

相关文章
|
Web App开发 JavaScript 前端开发
前端接收数据流实现图片预览效果--ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
本文为转载文章 原文链接:https://www.cnblogs.com/cdemo/p/5225848.html 首先要谢谢这位大神的无私贡献!解决了我的问题也完美表达了我当时的心路历程 ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践 写在前面 :从提出需求到完美的解决问题,实现过程是曲折的。
7982 0
|
2月前
|
存储
文件底层的深入理解之文件输入输出重定向
文件底层的深入理解之文件输入输出重定向
|
2月前
|
网络协议 Shell
使用输入输出重定向与管道命令——重定向
使用输入输出重定向与管道命令——重定向。
26 0
|
2月前
|
Linux Shell
使用输入输出重定向与管道命令——管道
使用输入输出重定向与管道命令——管道。
35 0
HttpServletRequest共享数据、请求转发、请求包含、获取流对象及中文乱码问题
HttpServletRequest共享数据、请求转发、请求包含、获取流对象及中文乱码问题
65 0
|
存储 Java
Java开发——30.I/O流_处理流(数据流、输入/输出流和打印流)
处理流就相当于外衣,每件衣服的作用不同,每个处理流的作用也不同,处理流可以实现多嵌套,即可以有多个处理流,每个处理流的功能不同!
Java开发——30.I/O流_处理流(数据流、输入/输出流和打印流)
|
算法 网络协议 前端开发
重发和重定向有什么区别与重定向应用
重发和重定向有什么区别与重定向应用
185 0
重发和重定向有什么区别与重定向应用
|
安全 数据安全/隐私保护
Web---字节输出流和字符输出流的共存问题、转发、重定向、请求包含知识点讲解(2)
Web---字节输出流和字符输出流的共存问题、转发、重定向、请求包含知识点讲解
114 0
Web---字节输出流和字符输出流的共存问题、转发、重定向、请求包含知识点讲解(2)
Web---字节输出流和字符输出流的共存问题、转发、重定向、请求包含知识点讲解
Web---字节输出流和字符输出流的共存问题、转发、重定向、请求包含知识点讲解
144 0
|
Shell Linux 开发者
重定向和管道 | 学习笔记
快速学习重定向和管道。
125 0

热门文章

最新文章