前言

数据是怎么写道磁盘的?

C++——流类库和输入/输出

代码里面我们一个读写调用似乎就能将数据从磁盘读写。仿佛代码是直接和磁盘打交道。以我们最常见的笔记本、或台式机的磁盘SATA盘为例,其受南桥上ATA控制器支配,这里面传输的ATA指令。至少我们代码里面是没有处理这部分的,所以我们代码直接操控磁盘说不通。现实情况是,C++通过IO流库和磁盘打交道。

IO流库

C++语言中并没有输入/输出语句,而是在标准库里包含了一个I/O流类库,它与标准模板库同为C++标准库中最重要的组成部分。数据从一个对象到另一个对象的传送被抽象为“流”。数据的输入/输出就是通过输入/输出流来实现的。 流是一种抽象的概念,负责在数据的产生者和数据的使用者之间建立联系,并管理数据的流动。

流类体系

整个流类体系是一个派生类体系。按ANSI C++标准,类ios是抽象类,它的析构函数是虚函数,它的构造函数为保护的,作为所有基本流类的基类。
  C++——流类库和输入/输出

ios提供了对流进行格式化输入输出和错误处理的成员函数。所有派生都是公有派生。

istream类提供完成提取(输入)操作的成员函数

ostream类提供完成插入(输出)操作的成员函数。

iostream类是前两者的组合。

C++——流类库和输入/输出

streambuf是一个独立的类,只是ios有一个保护访问限制的指针指向它。streambuf的作用是管理一个流的缓冲区。

 C++——流类库和输入/输出

在流类库中,最重要的两部分功能为:

①标准输入/输出(standard input/output)

②文件处理

在C++的流类库中定义了四个全局流对象,可以完成人机交互的功能(要使用这四个功能,必须包含<iostream.h>文件。):

①cin 标准输入流对象,键盘为其对应的标准设备。带缓冲区

②cout 标准输出流对象,显示器为标准设备。带缓冲区,一旦错误发生立即显示。

③cerr   标准错误输出流,输出设备是显示器。非缓冲区

④clog   标准错误输出流,输出设备是显示器。带缓冲区

输入输出格式控制

C++在类ios中提供格式化输入输出。这些格式是对所有文本方式的输入输出流均适用。格式控制符定义为公有的无名的枚举类型:

 1 enum{ skipws=0x0001,    //跳过输入中的空白字符
 2    left=0x0002,                 //输出左对齐
 3    right=0x0004,        //输出右对齐
 4    internal=0x0008,            //在输出符号或数制字符后填充
 5    dec=0x0010,                    //在输入输出时将数据按十进制处理
 6    oct=0x0020,                    //在输入输出时将数据按八进制处理
 7    hex=0x0040,                    //在输入输出时将数据按十六进制处理
 8    showbase=0x0080,            //在输出时带有表示数制基的字符
 9    showpoint=0x0100,        //输出浮点数时,必定带小数点
10    uppercase=0x0200,    //输出十六进制,用大写
11    showpos=0x0400,        //输出正数时,加”+”号
12    scientific=0x0800,        //科学数方式输出浮点数
13    fixed=0x1000,        //定点数方式输出实数
14    unitbuf=0x2000,        //插入后,立即刷新流
15    stdio=0x4000}            //插入后,立即刷新stdout和stderr
16 
17          
View Code

相关文章:

  • 2022-12-23
  • 2021-12-30
  • 2021-08-09
  • 2021-11-18
  • 2021-12-08
猜你喜欢
  • 2021-08-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
  • 2021-06-17
相关资源
相似解决方案