C++I/O输入输出

1.流和缓冲区:我们通常说的流,可以理解为从一个地方流向另一个地方。在C++中的I/O是指的输入/输出端口,那么I/O流就可以简单的理解为在外部设备和内存之间的数据流动。直白的讲,流实际上是一个字节序列,即:字节流。而C++程序把输入输出看做字节流,所以C++的输入输出是以字节流的形式实现的。输入时,程序从流中抽取字节;输出时,程序将字节插入到输出流中。简单说下:输入流:与输入设备(如
摘要由CSDN通过智能技术生成

1.流和缓冲区:

我们通常说的流,可以理解为从一个地方流向另一个地方。在C++中的I/O是指的输入/输出端口,那么I/O流就可以简单的理解为在外部设备和内存之间的数据流动。直白的讲,流实际上是一个字节序列,即:字节流。而C++程序把输入输出看做字节流,所以C++的输入输出是以字节流的形式实现的。输入时,程序从流中抽取字节;输出时,程序将字节插入到输出流中。

简单说下:


输入流:

与输入设备(如键盘)相关联的流,由外部设备流向内存。从输入流中获取数据的操作成为输入、读或者是提取操作。

如:在程序中执行:

cin>>number1>>number2;

那么我们输入 10 20相当于:
将 10 20 通过插入运算符放入内存中:

number1   

    10         

number2 

     20



输出流:

与输出设备(如屏幕)相关联的流,数据由内存流向外部设备。将数据放入输出流的操作被称作:输出。写、或者插入。

如在程序中指向:

cout <<"Name";

那么字符串Name将会通过<<插入运算符从内存流向屏幕。当然具体的流向机制并不是这样简简单单。

输入/输出流:与输入/输出设备相关联的流。


缓冲区:

流的本质既然是字节流,而且输入输出就是字节的插入或者抽取。那么如果我们在插入或者抽取字符的操作中,读取完一个字节进行操作,然后才能去读取操作下一个字节的话,这是十分耗费硬盘活动的,。而且还很麻烦。(注意:是程序通常每次只能处理一个字节的信息。)那么缓冲区的存在就是优化这个问题的。

缓冲区是用作中介的内存块,它是将信息从设备传输到程序或者从程序传输到设备的临时存储工具。既然我们每次只能处理一个字节的信息,这是定下来的。那么我们可以选择从读取方面进行优化,即:

我们每次读取多个字节或者字符放入到缓冲区,然后程序从缓冲区中一个一个字节的处理。这样的方法更快也更方便。


说点题外话:

键盘输入的话每次提供 一个字符,因为在这种情况下就不需要缓冲区来匹配不同的数据传输速率了,但是对键盘进行缓冲可以让用户输入传给程序之间可以返回更正,就像我们在刷算法题,输入数据的时候如果输入错误,并且没有按下回车,就可以退回,重新输入的原因,按下空格之后,缓冲区被刷新,数据传入到程序中处理(刷新缓存区:将缓存区中的整块数据传入给硬盘,并清空缓冲区,以备下一批输入)。


I/O流类关系图:

  



于I/O流相关类的简介表



1.输出


1.<<运算符的重载

<< 运算符本是按位左移运算符,ostream重新定义了<<运算符,将其重载为输出。 这样,<<运算符用于输出时被称作:插入运算符。

那么C++所有的基本类型可以用<<进行输出:

unsigned char;
signed char;
char;
short;
unsigned short;
int
unsigned int;
long;
unsigned long;
long long;
unsigned long long
float;
double
long double;
ostream 类还未下面的指针类型定义了进行了插入运算符的重载函数:
const signed char*;
const unsigned char*
const char*
void*;


使用<< 进行连续的输出:

比如: 

cout << "My"<<"name"<<"is"<<"Lsz";

为什么这句话可以正常的输出呢?

是因为插入运算符返回的类型是ostream&,即:函数的原型为:

ostream & operato

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值