缓冲区

缓冲区是作为中介的内存块

产生原因:磁盘能每次512 Byte实现数据传输,但是程序一次只能处理一个字节的信息,缓冲区一次来平衡二者之间的读写速率。
虽然磁盘一次读取数据大,但是硬件操作的速度是相当慢速的,缓冲区能够将一次读取多的数据存储到内存中来,等待程序进行读取。

刷新缓冲区 flushing the buffer

在输出的时候,程序首先填满缓冲区,就会把整块数据传输给硬盘,并且清空缓冲区

输入缓冲

由于键盘的输入是每次一个字符,我们输入的时候并不需要缓冲区来帮助匹配i不同的数据传输协议。一般来说 c++ 程序是在用户按下回车的时候刷新缓冲区,换言之在程序发送换行符的时候会刷新缓冲区。当程序需要用到输入的时候,也会刷新缓冲区

iostream

ios 类

一般流属性,包括一个指向 streambuf 对象的指针

streambuf 类

管理输入输出缓冲区中的内存
包括填充缓冲区、访问缓冲区、刷新缓冲区、管理缓冲区的功能

ostream 类

继承自ios,管理输出方法
全局对象 cout

istream 类

继承自ios,管理输入方法
全局对象 cin

iostream 类

继承自 istreamostream

ios_base 类

表示流的一般特征,比如是否可以读取、是二进制流还是文本流

ISO 定义 I/O

c++98 中进行了对 IO 的两方面修订

  1. <ostream.h> 变成了 <ostream> ,同时将类放到 std 命名空间中
  2. char 类扩展了 wchar_t 的字符类型 (16 bit)
    c++11 中添加了 char16_tchar32_t
    那么我们就会发现,这样输入的数据类型变多了,但是官方并没有开发很多套不同的数据类型的输入函数,相反采用了模板(template) 进行输入