第14章 输入输出流类库
2021/2/24 1 第14章 输入/输出流类库
输入输出:指程序与计算机的外部设备之间进行信息交换 输出操作:将一个对象转换为一个字符序列,输出到某地方。 输入操作:从某地方接收一个字符序列,转换为对象要求的格 式赋给对象。 目的:接收输出数据的地方 源:输入数据来自的地方。 输入输出的本质 字符序列 源[目的 流动 故将输入/输出操作的类体系称为流类,提供这个流类实现的 系统称为流类库 2021/2/24
2021/2/24 2 输入输出:指程序与计算机的外部设备之间进行信息交换。 输出操作:将一个对象转换为一个字符序列,输出到某地方。 输入操作:从某地方接收一个字符序列,转换为对象要求的格 式赋给对象。 目的:接收输出数据的地方。 源:输入数据来自的地方。 输入输出的本质: 字符序列 源 目的 流动 故将输入/输出操作的类体系称为流类,提供这个流类实现的 系统称为流类库
概述 两套方法: 与C语言兼容的输入/输出库数建议使用 输入/输出流类库 流( Stream) 什么是流是有向的数据流动的抽象描述,是数据流动的 渠道和方向,是程序与输入输出设备的连接桥梁。如: cin>>name;∥从流对象(键盘)读数据放入变量中 cout<<"my name is"<< name < endl 将数据写到流对象(屏幕)中 2021/2/24
2021/2/24 3 建议使用 概述 两套方法: •与C语言兼容的输入/输出库函数 •输入/输出流类库 流(Stream) 什么是流 是有向的数据流动的抽象描述,是数据流动的 渠道和方向,是程序与输入/输出设备的连接桥梁。如: cin >> name; //从流对象(键盘)读数据放入变量中 cout << my name is << name << endl; //将数据写到流对象(屏幕)中
输出设备 文件 程序 输入设备 两种类型的流:文本流、二进制流 文本流:一串ASCI字符,如源程序文件、文本文件。 可直接输出至显示器或打印机上 二进制流:将数据以二进制的形式存放,传输时不要作 变换。 2021/224
2021/2/24 4 两种类型的流:文本流、二进制流 文本流:一串ASCII字符,如源程序文件、文本文件。 可直接输出至显示器或打印机上。 二进制流:将数据以二进制的形式存放,传输时不要作 变换。 程序 输入设备 输出设备 文件
使用流的优点: 减少使用不当引起的程序错误 减少成员函数 文件 文件是C++对具体设备的抽象。如:一个源程序 个描述类的数据结构、一个可执行程序、一台显示器、 台打印机等 文件可具有不同的行为,即执行不同的操作。如:将 数据写入磁盘文件或取出;将数据写入打印机文件等。 2021/224 5
2021/2/24 5 使用流的优点: •减少使用不当引起的程序错误 •减少成员函数 文件 文件是C++对具体设备的抽象。如:一个源程序、一 个描述类的数据结构、一个可执行程序、一台显示器、 一台打印机等。 文件可具有不同的行为,即执行不同的操作。如:将 数据写入磁盘文件或取出;将数据写入打印机文件等
缓冲 缓冲区:系统在内存中开辟的专用来临时存放输入/输出信 息的区域 非缓冲的:一旦数据送入流立即处理 输入/输出流 缓冲的:当缓冲区满时或当前送入的数据为 新的一行字符时才处理。 提高系统效率 一般使用缓冲流,特 殊情况使用非缓冲流 2021/224 6
2021/2/24 6 缓冲 缓冲区:系统在内存中开辟的专用来临时存放输入/输出信 息的区域。 输入/输出流 缓冲的:当缓冲区满时或当前送入的数据为 新的一行字符时才处理。 非缓冲的:一旦数据送入流立即处理。 提高系统效率 一般使用缓冲流,特 殊情况使用非缓冲流
类jos中有一个指针 C+的基本流类体系成员指向类 streambu的一个对 基类 象。其作用是管理 基本流类体系 流的缓冲区。 lOS streambuf 类os的公有 派生类,提 类os的公有派 供完成输入 操作的成员 ostream 生类,提供完 Istream 成输出操作的 函数 成员函数 由 stream 和 iostream ostream公有派 均包含在头文 生,可完成输 件 iostream. h中 入/输出操作 输入/输出的基本流类体系 2021/224
2021/2/24 7 均包含在头文 件iostream.h中 C++的基本流类体系 基本流类体系 ios streambuf istream ostream iostream 输入/输出的基本流类体系 基类 类ios中有一个指针 成员指向类 streambuf的一个对 象。其作用是管理 流的缓冲区。 类ios的公有 派生类,提 供完成输入 操作的成员 函数。 类ios的公有派 生类,提供完 成输出操作的 成员函数。 由istream和 ostream公有派 生,可完成输 入/输出操作
预定义的标准流与提取和插入运算符 四个标准流对象:cin、cout、cer、clog。 cin为其对象 公有派生 类 stream 类 istream withassign cout、cerr、clog为其对象 公有派生 类 ostream 类 ostream withassign 2021/224 8
2021/2/24 8 预定义的标准流与提取和插入运算符 四个标准流对象:cin、cout、cerr、clog。 类istream 公有派生 类istream_withassign cin为其对象 类ostream 公有派生 类ostream_withassign cout、cerr、clog为其对象
使用“>”实现 标准输入流。默认设 流 cIn 备键盘,实现从键盘 输入数据。 标准输出流。默认设 流流 cout 备显示器,实现从显 示器上显示数据 流cog 输入/输出时系 标准错误信息输统自动完成数据 出流。默认显示 类型的转换 缓_流 cerr 流 标准流通过重载“>”和“<”执行输入/输出 其余使用“<<”实 称提取称插入 2021/224 运算符运算符 9
2021/2/24 9 流cin 标准输入流。默认设 备键盘,实现从键盘 输入数据。 流cout 标准输出流。默认设 备显示器,实现从显 示器上显示数据。 流cerr 流clog 标准错误信息输 出流。默认显示 器。 缓 冲 流 非 缓 冲 流 标准流通过重载“>>”和“>”实现 其余使用“<<”实 现 输入/输出时系 统自动完成数据 类型的转换
输入流 转换二进制数 字符序列 赋给变量 或ASCI码 输出流 转换 输出数据 字符串文件 2021/224 10
2021/2/24 10 字符序列 二进制数 或ASCII码 转换 输入流 赋给变量 输出数据 字符串 转换 输出流 文件