返回介绍

17.6 总结

发布于 2024-10-08 23:14:13 字数 1689 浏览 0 评论 0 收藏 0

流是进出程序的字节流。缓冲区是内存中的临时存储区域,是程序与文件或其他 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文