面向对象技术与C++第七章.pptVIP

  • 4
  • 0
  • 约2.81千字
  • 约 18页
  • 2018-03-16 发布于河南
  • 举报
面向对象技术与C第七章

C++的I/O流类库 输入输出的目标 从键盘读入数据 在屏幕上显示数据 将数据保存在文件中 从文件中取出数据 内容 C++的流及流类库 输入输出的格式控制 用户自定义类型的输入输出 文件的输入输出 C++的流及流类库 C++系统提供了一个用于输入输出(I/O)操作的类体系,该类体系提供了对预定义类型进行输入输出操作的能力,允许C++建立一个可扩展的输入输出系统。从而,利用该系统进行用户自定义类型的输入输出操作。 在C++中,输入输出操作是由“流”来处理的。 所谓流是指数据从一个位置流向另一个位置。流具有方向性:与输入设备相联系的流称为输入流;与输出设备相联系的流称为输出流;与输入输出设备相联系的流称为输入输出流。 C++预定义的4个流类对象 C++中包含了四个预定义的流类对象 标准输入流cin 标准输入设备,默认键盘 标准输出流cout 标准输出设备,默认显示器 非缓冲型的标准出错流cerr 标准错误输出设备,显示器(非缓冲方式) 缓冲型的标准出错流clog 标准错误输出设备,显示器(缓冲方式) cerr与clog的区别 cerr是非缓冲式的,发送给它的任何内容都立即输出 clog是缓冲式的,只有当缓冲区满时才进行输出,也可通过刷新流的方式强迫刷新缓冲区 主张使用cerr,因为有时缓冲区的使用会抑制错误信息的显示。 流类库 C++流类库是用继承方法建立起来的输入输出类库,他具有两个平行的基类,如图示: istream:提供向流类插入数据(输入)的操作; ostream:提供从流中提取数据(输出)的有关操作; Iostream:综合了istream类和ostream类的行为。 streambuf类是一个抽象类,是为ios类及派生类提供对数据的缓冲支持。 流类库 streambuf类 streambuf类是一个抽象类,也被称为缓冲区类。 预定义类型的输入输出 无格式输入输出 使用两个流对象cin和cout,以及两个运算符“”和“”实现输入输出。其一般格式: cin变量; //输入 cout变量或常量; //输出 它们被解释为: cin.operator(变量); cout.operator(变量或常量); 因此,“”和“ ”运算符可以重载。 预定义类型的输入输出 例如: int x; float y; cinxy; 输入:23 12.56 char *str; cinstr; 输入:Object_Oriented programming 则结果是:str=“Object_Oriented”,后面的字符被忽略。 输入输出的格式控制 通过调用cin、cout等对象的成员函数进行格式标志位的设置见p249 表7.1 通过使用操纵符(即操作子)进行格式的控制,这种方式可以直接使用在和中 要使用操纵符则必须包含头文件“iomanip.h” 用户可以自定义操纵符,并将其使用在和流操作中 输入输出的格式控制 C++提供的常用的预定义操纵符: 1、dec、hex、oct 以十进制、十六进制、八进制形式输入输出整型数; 2、endl 插入一个换行符,并刷新输出流,仅用于输出; 3、ws 用于在输入时跳过开头的空白符,仅用于输入; 4、setw(int n)设置域宽为n,用于输入输出; 5、setprecision(int n)设置小数部分位数,用于输入输出; 6、setfill(int c)设置c为填充字符,默认为空格。 预定义操纵符输入输出 例7.4 #include iostream.h #include iomanip.h main() { coutsetw(10)123567endl; cout 123 setiosflags(ios::scientific)setw(20) 123.456789endl; cout 123 setw(10)hex123endl; cout 123 setw(10)oct123endl; cout setiosflags(ios::left)setfill(‘$’)setw(8)123endl; return 0; } 用户自定义类型的输入输出 用户自定义的类类型数据的输入输出用重载“”和“”来实现。 重载输出运算符,一般格式如下: ostream operator(ostream out,class_name obj) { outobj.item1; outobj.item2; …… outobj.itemn; return out; } 用户自定义类型的输入输出 重载输入运算符(又称提取运算符) 一般格式如下: istream opera

文档评论(0)

1亿VIP精品文档

相关文档