标准输入输出 iostream
缓冲区
缓冲区是作为中介的内存块
产生原因:磁盘能每次512 Byte实现数据传输,但是程序一次只能处理一个字节的信息,缓冲区一次来平衡二者之间的读写速率。
虽然磁盘一次读取数据大,但是硬件操作的速度是相当慢速的,缓冲区能够将一次读取多的数据存储到内存中来,等待程序进行读取。
刷新缓冲区 flushing the buffer
在输出的时候,程序首先填满缓冲区,就会把整块数据传输给硬盘,并且清空缓冲区
输入缓冲
由于键盘的输入是每次一个字符,我们输入的时候并不需要缓冲区来帮助匹配i不同的数据传输协议。一般来说 c++ 程序是在用户按下回车的时候刷新缓冲区,换言之在程序发送换行符的时候会刷新缓冲区。当程序需要用到输入的时候,也会刷新缓冲区
iostream
ios 类
一般流属性,包括一个指向 streambuf 对象的指针
streambuf 类
管理输入输出缓冲区中的内存
包括填充缓冲区、访问缓冲区、刷新缓冲区、管理缓冲区的功能
ostream 类
继承自ios,管理输出方法
全局对象 cout
istream 类
继承自ios,管理输入方法
全局对象 cin
iostream 类
继承自 istream 和 ostream 类
ios_base 类
表示流的一般特征,比如是否可以读取、是二进制流还是文本流
ISO 定义 I/O
在 c++98 中进行了对 IO 的两方面修订
- 将
<ostream.h>变成了<ostream>,同时将类放到std命名空间中 - 将
char类扩展了wchar_t的字符类型 (16 bit)
c++11中添加了char16_t和char32_t
那么我们就会发现,这样输入的数据类型变多了,但是官方并没有开发很多套不同的数据类型的输入函数,相反采用了模板(template) 进行输入
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
