头文件
<cstdio> (stdio.h)
C 语言的标准输入输出库,用于执行输入/输出操作。
C++ 也可以使用 **C** **St**andard **Input and **Output Library (cstdio,在 C 语言中称为stdio.h)执行输入输出操作。该库使用所谓的“流”来操作物理设备,例如键盘、打印机、终端或系统支持的任何其他类型的文件。流是一种抽象,可以以统一的方式与这些设备进行交互;所有流都具有相似的属性,而与它们关联的物理介质的特性无关。
在cstdio库中,流被处理为 FILE 对象的指针。指向 FILE 对象的指针唯一标识一个流,并作为涉及该流的操作的参数。
还有三个标准流:stdin、stdout 和 stderr,它们是使用该库的所有程序自动创建和打开的。
流的属性
流具有一些属性,这些属性定义了可以在其上使用的函数以及这些函数如何处理通过它们输入或输出的数据。其中大多数属性是在使用 fopen 函数将流与文件关联(打开)时定义的。
- 读/写访问
- 指定流是否对与其关联的物理介质具有读或写访问权限(或两者兼有)。
- 文本/二进制
- 文本流被认为是表示一组文本行,每行都以换行符结尾。根据应用程序运行的环境,文本流可能会发生某些字符转换,以使某些特殊字符适应该环境的文本文件规范。另一方面,二进制流是写入或从物理介质读取的字符序列,没有转换,与写入或从流读取的字符具有一对一的对应关系。
- 缓冲区
- 缓冲区是数据在被物理读取或写入关联文件或设备之前累积的内存块。流可以是“全缓冲”、“行缓冲”或“无缓冲”。对于全缓冲流,当缓冲区填满时会读取/写入数据;对于行缓冲流,这发生在遇到换行符时;对于无缓冲流,字符应尽快读取/写入。
- 方向性
- 打开时,流没有方向性。一旦在流上执行了输入/输出操作,它们就会变成“字节导向”或“宽导向”,具体取决于执行的操作(通常,在<cstdio>中定义的函数是“字节导向”的,而在 <cwchar> 中定义的函数是“宽导向”的)。有关更多信息,请参阅 cwchar。