前言
- 用于执行
输入/输出
操作的 C 库;- 输入和输出操作也可以使用 C 标准输入和输出库在 C++ (
cstdio
)中执行。- 该库使用流来操作
物理设备
,例如键盘、打印机、终端或系统支持的任何其他类型的文件。- 流是一种以统一方式与这些
交互的抽象
; 所有流都具有
相似的属性
,独立于它们所关联的
物理媒体
的各个特性。
- 流在 cstdio 库中作为指向
FILE 对象
的指针进行处理。 指向 FILE 对象的指针唯一标识一个流,并在涉及该流的操作中用作参数。
- 还存在三个标准流:
stdin
、
stdout
和
stderr
,它们是为使用该库的
所有程序自动创建
和
打开
的。
文章目录
一、流
1、属性
1.1 读/写访问
指定流是否对它们关联的物理媒体
具有读或写访问(或两者都有)
。
1.2 文本或二进制
- 文本流即一组文本行,每一行以
换行符
结尾。 根据应用
程序运行
的环境,文本流可能会发生一些
字符转换
,以使某些
特殊字符适应环境
的文本文件规范。- 二进制流是从
物理媒体
写入或读取的字符序列,
不需要转换
,与读或写到流的字符有
一一对应
关系。
1.3 缓冲
缓冲区是一个
内存块
,数据在物理地
读或写
到相关的文件或设备之
前
在其中积累。 流可以被
完全缓冲
、
行缓冲
或
不缓冲
。
- 完全缓冲的流中,当缓冲区
被填满时
读取/写入数据;- 行缓冲流中,当遇到
新行字符
时读取/写入数据;- 未缓冲流中,字符将
尽可能快
地读取/写入。
1.4 取向
在打开时,
流没有方向
。 一旦对它们
执行
输入/输出操作,它们就变成
面向字节
的或
面向广泛
的,这取决于所执行的操作(通常,在
<cstdio>
中定义的函数是
面向字节
的,而在
<cwchar>
中定义的函数是
面向广泛
的)。
2、指标
2.1 错误指示器
当与流相关的操作发生
错误
时设置此指示器。 这个指示器可以用
ferror
函数来检查,也可以通过调用
clearerr、freopen或rewind
来重置。 `
2.2 文件尾指示器
对流执行的最后一次读或写操作到达文件结束位置。 用
feof
函数检查,也可以通过调用
clearerr
或
freopen
或调用任何重新定位函数(
rewind
,
fseek
和
fsetpos
)来重置。 一般常用
feof
、
fseek
。
位置指示器
它是每个流的
内部指针
,指向
下一次I/O操作
中要读或写的
下一个字
符。 它的值可以通过
ftell
和
fgetpos
函数获得,常用
fseek
来改变。
3、功能
3.1 文件处理
3.2 文件访问
3.2 格式化输入/输出
3.3 字符输入/输出
3.4 直接输入/输出
3.5 错误处理
3.6 宏
3.7类型