输入/输出流(I/O)【C++】
1、I / O流的概念
(1.1)基本概念
在 C++ 语言中,数据的输入和输出(简写为 I/O )包括对标准输入设备键盘和标准输出设备显示器、对在外存磁盘上的文件和对内存中指定的字符串存储空间进行输入输出这三个方面:
(1)输入设备和标准输出设备的输入输出简称为标准 I/O;
(2)对在外存磁盘上文件的输入输出简称为文件 I/O;
(3)对内存中指定的字符串存储空间的输入输出简称为串 I/O。
C++ 中把数据之间的传输操作称作流。在 C++ 中,流既可以表示数据从内存传送到某个载体或设备中,即输出流;也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。在进行 I/O 操作时,首先打开操作,使流和文件发生联系,建立联系后的文件才允许数据流入或流出,输入或输出结束后,使用关闭操作使文件与流断开联系。
字节流 :字节流分为字符流(也称文本流)和二进制流。
字符流:在数据传输时需作转换,效率较低。但可以直接编辑,显示或打印。
二进制流:将字节流的每个字节以二进制方式解释,它在数据传输时不作任何转换,故效率高。但无法人工阅读,可移植性较差。
文件:文件是一般指存储在外部介质上数据的集合。计算机中的程序、数据、文档通常都组织成文件存放在外存储器中。
缓冲:系统在主存中开辟的、用来临时存放输入输出数据的区域,成为输入输出缓冲区(简称缓冲区)。
命名空间:就是在程序的不同的模块中使用相同的名字表示不同的事物(实体)。目的是提供一种机制,使大程序的各个部分中因出现重名而导致冲突的可能性降到最低。
(1.2)C++ 建立自己输入输出系统原因
(1)因为 C++ 的输入输出系统比 C 语言更安全、更可靠;
(2)在 C++ 中需要定义众多的用户自定义类型(如结构体、类等),但是使用 C 语言中的 printf和 scanf 是无法对这些数据进行输入输出操作的。
2、输入/输出流类体系
(2.1)流类库
C++ 为实现数据的输入和输出定义了一个庞大的流类库,它包括的类主要有 ios,istream,ostream,iostream,ifstream,ofstream,fstream等。类 istream 和 ostream 是类 ios 的公有派生类,分别提供输入和输出操作。
类名 |
说明 |
包含在哪个头文件 |
抽象流基类 |
||
ios |
流基类 |
iostream |
输入流类 |
||
istream |
通用输入流类和其它输入流的基类 |
iostream |
ifstream |
输入文件流类 |
fstream |
istrstream |
输入字符串流类 |
sstream |
输出流类 |
||
ostream |
通用输出流类和其它输出流的基类 |
iostream |
ofstream |
输出文件流类 |
fstream |
ostrstream |
输出字符串流类 |
sstream |
输入输出流类 |
||
iostream |
通用输入/输出流类和其它输入/输出流的基类 |
iostream |
fstream |
输入/输出文件流类 |
fstream |
strstream |
输入/输出字符串流类 |
sstream |
流缓冲区类 |
||
streambuf |
抽象流缓冲区基类 |
streambuf |
filebuf < |