第22讲C+的输入和输出 教学目的和要求: 了解I/0标准流类。 掌握格式化输入输出及重载输入输出运算符。 教学内容提要: 1、I/0标准流类; 2、文件流类; 3、预定义类型的输入输出; 4、用户自定义类型的输入输出 教学重点:格式化输入输出及重载输入输出运算符。 教学难点:格式化输入输出及重载输入输出运算符。 教学进度:P242P261 教学过程:
第22讲 C++的输入和输出 教学目的和要求: 了解I/O标准流类。 掌握格式化输入输出及重载输入输出运算符。 教学内容提要: 1、I/O标准流类; 2、文件流类; 3、预定义类型的输入输出; 4、用户自定义类型的输入输出 教学重点:格式化输入输出及重载输入输出运算符。 教学难点:格式化输入输出及重载输入输出运算符。 教学进度:P242~P261 教学过程:
2.1(+为何建立自己的输入输出系统 因为在C++中用户需要定义众多的自定义类型,但是C语 言的输入输出系统不支持用户自定义的类型。请看下面的 类 class my class( int i: float f: char *str: s obi 对此类类型,在C语言中下面的语句是不能接受的: printf (" my class " obj) ●C+的流类比C的输入输出函数具有更大的优越性
22.1 C++为何建立自己的输入输出系统 • 因为在C++中用户需要定义众多的自定义类型,但是C语 言的输入输出系统不支持用户自定义的类型。请看下面的 类: class my_class{ int i; float f; char *str; } obj; 对此类类型,在C语言中下面的语句是不能接受的: printf("% my_class",obj); • C++的流类比C的输入输出函数具有更大的优越性
22.2C+的流库及其基本结构 22.2.1C++的流 在C+中,流类是为输入输出提供的一组类, 它们都放在流库中。 流总是与某一设备相联系的(例如键盘、屏 幕或硬盘等),通过使用流类中定义的方法,就 可以完成对这些设备的输入输出操作 流具有方向性:与输入设备(如键盘)相联系 的流称为输入流;与输出设备(如屏幕)相联系的 流称为输出流;与输入输出设备(如磁盘)相联系 的流称为输入输出流
22.2 C++的流库及其基本结构 22.2.1 C++的流 在C++中,流类是为输入输出提供的一组类, 它们都放在流库中。 流总是与某一设备相联系的(例如键盘、屏 幕或硬盘等),通过使用流类中定义的方法,就 可以完成对这些设备的输入输出操作。 流具有方向性:与输入设备(如键盘)相联系 的流称为输入流;与输出设备(如屏幕)相联系的 流称为输出流;与输入输出设备(如磁盘)相联系 的流称为输入输出流
C+中包含几个预定义的流对象, ●标准输入流 cin与标准输入设备相关联 ●标准输出流 cout与标准输出设备相关联 ●非缓冲型的标准出错流cerr与标准错误输出设备 相关联(非缓冲方式) ·缓冲型的标准出错流clog与标准错误输出设备 相关联(缓冲方式) 在缺省情况下,指定的标准输出设备是屏幕,标 准输入设备是键盘
C++中包含几个预定义的流对象,: • 标准输入流 cin 与标准输入设备相关联 • 标准输出流 cout 与标准输出设备相关联 • 非缓冲型的标准出错流 cerr 与标准错误输出设备 相关联(非缓冲方式) • 缓冲型的标准出错流 clog 与标准错误输出设备 相关联(缓冲方式) 在缺省情况下,指定的标准输出设备是屏幕,标 准输入设备是键盘
22.2.2流类库 C++流类库具有两个平行的基类,即 streambuf类和ios类,所有其他的流类都是 从它们直接或间接地派生出来的 其中 ios类为输入输出操作在用户一方的接口, 负责高层操作: streambuf类为输入输出操作在物理设备 方的接口,负责低层操作
22.2.2 流类库 C++流类库具有两个平行的基类,即 streambuf类和ios类,所有其他的流类都是 从它们直接或间接地派生出来的 其中: ios类为输入输出操作在用户一方的接口, 负责高层操作: streambuf类为输入输出操作在物理设备 一方的接口,负责低层操作
istream ostream ifstream ofstream istrstream ostrstream istream withassign ostream withassign iostream fstream stdiostream strstream streambuf filebuf stdiobuf strstreambuf 图各类之间的关系
ios istream ostream istrstream ifstream istream_withassign ostream_withassign ofstream ostrstream iostream fstream stdiostream strstream streambuf filebuf stdiobuf strstreambuf 图 各类之间的关系
22.3预定义类型的输入输出 22.3.1无格式输入输出 基于C++类库的输入输出需使用两个流对 象cin和cout,还要用与之相配套的两个输入 输出运算符“>》〃和“>变量 //输人 cout<常量或变量;//输出
22.3 预定义类型的输入输出 22.3.1无格式输入输出 基于C++类库的输入输出需使用两个流对 象cin和cout,还要用与之相配套的两个输入 输出运算符“>>”和“>变量; // 输人 cout<< 常量或变量; // 输出
输出运算符 从运算符角度来看,输出通过输出运算符“<〃 来完成的,输出运算符“<<〃也称插入运算符, 它是一个双目运算符,有两个操作数,左操作数 为 ostream类的一个对象(如cout),右操作数为 个系统预定义类型的常量或变量。例如 cout< This is a string. n 完成的功能为写字符串“ This is a string.”到 流对象cout,cout为标准输出流,通常为屏幕
1. 输出运算符 从运算符角度来看,输出通过输出运算符“<<” 来完成的,输出运算符“<<” 也称插入运算符, 它是一个双目运算符,有两个操作数,左操作数 为ostream类的一个对象(如cout),右操作数为 一个系统预定义类型的常量或变量。例如 cout<<"This is a string.\n"; 完成的功能为写字符串“This is a string. ”到 流对象cout, cout为标准输出流,通常为屏幕
2.输入运算符 从运算符角度来看,输入操作通过输入 运算符“>〉〃来完成。输入运算符“>>〃 也称提取运算符,它也是一个双目运算符, 有两个操作数,左面的操作数是 astream 类的一个对象(cin),右面的操作数是系 统预定义的任何数据类型的变量。例如 intx: C1n>>X, 此时,用户从键盘输入的数值会自动 地转换为变量x的类型,并存入变量x内
2. 输入运算符 从运算符角度来看,输入操作通过输入 运算符“>>”来完成。输入运算符“>>” 也称提取运算符,它也是一个双目运算符, 有两个操作数,左面的操作数是istream 类的一个对象(cin),右面的操作数是系 统预定义的任何数据类型的变量。例如: int x; cin>>x; 此时,用户从键盘输入的数值会自动 地转换为变量x的类型,并存入变量x内
22.3.2格式化输入输出 C++提供了两种进行格式控制的方 法 种是使用io类中有关格式控制的 成员函数进行格式控制; 另一种是使用称为操纵符的特殊类 型的函数进行格式控制
22.3.2 格式化输入输出 C++提供了两种进行格式控制的方 法: 一种是使用ios类中有关格式控制的 成员函数进行格式控制; 另一种是使用称为操纵符的特殊类 型的函数进行格式控制