- 内容提要
- 前言
- 第 1 章 预备知识
- 第 2 章 开始学习 C++
- 第 3 章 处理数据
- 第 4 章 复合类型
- 第 5 章 循环和关系表达式
- 第 6 章 分支语句和逻辑运算符
- 第 7 章 函数——C++的编程模块
- 第 8 章 函数探幽
- 第 9 章 内存模型和名称空间
- 第 10 章 对象和类
- 第 11 章 使用类
- 第 12 章 类和动态内存分配
- 第 13 章 类继承
- 第 14 章 C++中的代码重用
- 第 15 章 友元、异常和其他
- 第 16 章 string 类和标准模板库
- 第 17 章 输入、输出和文件
- 第 18 章 探讨 C++新标准
- 附录 A 计数系统
- 附录 B C++保留字
- 附录 C ASCII 字符集
- 附录 D 运算符优先级
- 附录 E 其他运算符
- 附录 F 模板类 string
- 附录 G 标准模板库方法和函数
- 附录 H 精选读物和网上资源
- 附录 I 转换为 ISO 标准 C++
- 附录 J 复习题答案
17.6 总结
流是进出程序的字节流。缓冲区是内存中的临时存储区域,是程序与文件或其他 I/O 设备之间的桥梁。信息在缓冲区和文件之间传输时,将使用设备(如磁盘驱动器)处理效率最高的尺寸以大块数据的方式进行传输。信息在缓冲区和程序之间传输时,是逐字节传输的,这种方式对于程序中的处理操作更为方便。C++通过将一个被缓冲流同程序及其输入源相连来处理输入。同样,C++也通过将一个被缓冲流与程序及其输出目标相连来处理输出。iostream 和 fstream 文件构成了 I/O 类库,该类库定义了大量用于管理流的类。包含了 iostream 文件的 C++程序将自动打开 8 个流,并使用 8 个对象管理它们。cin 对象管理标准输入流,后者默认与标准输入设备(通常为键盘)相连;cout 对象管理标准输出流,后者默认与标准输出设备(通常为显示器)相连;cerr 和 clog 对象管理与标准错误设备(通常为显示器)相连的未被缓冲的流和被缓冲的流。这 4 个对象有都有用于宽字符的副本,它们是 wcin、wcout、wcerr 和 wclog。
I/O 类库提供了大量有用的方法。istream 类定义了多个版本的抽取运算符(>>),用于识别所有基本的 C++类型,并将字符输入转换为这些类型。get( ) 方法族和 getline( ) 方法为单字符输入和字符串输入提供了进一步的支持。同样,ostream 类定义了多个版本的插入运算符(<<),用于识别所有的 C++基本类型,并将它们转换为相应的字符输出。put( ) 方法对单字符输出提供了进一步的支持。wistream 和 wostream 类对宽字符提供了类似的支持。
使用 ios_base 类方法以及文件 iostream 和 iomanip 中定义的控制符(可与插入运算符拼接的函数),可以控制程序如何格式化输出。这些方法和控制符使得能够控制计数系统、字段宽度、小数位数、显示浮点变量时采用的计数系统以及其他元素。
fstream 文件提供了将 iostream 方法扩展到文件 I/O 的类定义。ifstream 类是从 istream 类派生而来的。通过将 ifstream 对象与文件关联起来,可以使用所有的 istream 方法来读取文件。同样,通过将 ofstream 对象与文件关联起来,可以使用 ostream 方法来写文件;通过将 fstream 对象与文件关联起来,可以将输入和输出方法用于文件。
要将文件与流关联起来,可以在初始化文件流对象时提供文件名,也可以先创建一个文件流对象,然后用 open( ) 方法将这个流与文件关联起来。close( ) 方法终止流与文件之间的连接。类构造函数和 open( ) 方法接受可选的第二个参数,该参数提供文件模式。文件模式决定文件是否被读和/或写、打开文件以便写入时是否截短文件、试图打开不存在的文件时是否会导致错误、是使用二进制模式还是文本模式等。
文本文件以字符格式存储所有的信息,例如,数字值将被转换为字符表示。常规的插入和抽取运算符以及 get( ) 和 getline( ) 都支持这种模式。二进制文件使用计算机内部使用的二进制表示来存储信息。与文本文件相比,二进制文件存储数据(尤其是浮点值)更为精确、简洁,但可移植性较差。read( ) 和 write( ) 方法都支持二进制输入和输出。
seekg( ) 和 seekp( ) 函数提供对文件的随机存取。这些类方法使得能够将文件指针放置到相对于文件开头、文件尾和当前位置的某个位置。tellg( ) 和 tellp( ) 方法报告当前的文件位置。
sstream 头文件定义了 istringstream 和 ostringstream 类,这些类使得能够使用 istream 和 ostream 方法来抽取字符串中的信息,并对要放入到字符串中的信息进行格式化。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论