C++官网参考链接:https://cplusplus.com/reference/cstdio/
头文件
<cstdio> (stdio.h)
C库执行输入/输出操作
输入和输出操作也可以在C++中使用C标准输入和输出库(cstdio,在C语言中称为stdio.h)来执行。这个库使用所谓的流来操作物理设备,如键盘、打印机、终端或系统支持的任何其他的文件类型。流是以统一的方式与这些交互的抽象;所有流都具有类似的属性,独立于它们所关联的物理媒体的单个特征。
流在cstdio库中作为指向FILE对象的指针进行处理。指向FILE对象的指针唯一地标识一个流,并在涉及该流的操作中用作形参。
还有三种标准流:stdin,stdout和stderr,它们会自动创建并为使用标准库的所有程序打开。
流属性
流具有一些属性,这些属性定义了可以在它们上使用哪些函数,以及这些函数将如何处理通过它们输入或输出的数据。这些属性中的大多数都是在使用fopen函数将流与文件(打开)关联时定义的:
读/写访问
指定流是否具有对其关联的物理媒体的读或写访问权(或两者都有)。
文本/二进制
文本流被认为代表一组文本行,每一行以一个换行字符结束。根据运行应用程序的环境,文本流可能会发生一些字符转换,以使某些特殊字符适应环境的文本文件规范。另一方面,二进制流是从物理媒体中写入或读取的字符序列,无需转换,与读取或写入流的字符具有一一对应关系。
缓冲
缓冲区是一个内存块,在对相关文件或设备进行物理读写之前,在这里积累数据。流可以是完全缓冲的,行缓冲的或无缓冲的。在完全缓冲的流上,数据在缓冲区被填满时被读/写,在行缓冲流上,这发生在遇到换行字符时,而在无缓冲流上,字符被尽可能快地读/写。
方向
在打开时,流没有方向。一旦对它们执行了输入/输出操作,它们就会变成面向字节或面向宽字符的,这取决于所执行的操作(通常,
指示符
流有特定的内部指示符,用于指定它们的当前状态,并影响对它们执行的某些输入和输出操作的行为:
错误指示符
当与流相关的操作发生错误时设置此指示符。这个指示符可以用ferror函数检查,并且可以通过调用clearerr,freopen或rewind来重置。
文件结束指示符
设置此值时,表示对流执行的最后一次读写操作已到达文件结束。它可以用feof函数检查,并可以通过调用clearerr或freopen或调用任何重新定位函数(rewind,fseek和fsetpos)来重置。