好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

2015c++_15 (1).pdf

42页
  • 卖家[上传人]:kms****20
  • 文档编号:46647406
  • 上传时间:2018-06-27
  • 文档格式:PDF
  • 文档大小:581.94KB
  • / 42 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1 1 1 1 1第第15章章 输入输出流输入输出流学习目标::(1)(1)重点:重点:文本文件的操作文本文件的操作(2)(2)理解:理解:流(流(streamstream))2 2 2 2 2 2主要内容主要内容15.1 C++的输入输出流++的输入输出流15.2 格式化的输入输出格式化的输入输出15.3 文件流文件流3计算机中的数据从一个设备到另一个设备的传输,就称为数据流计算机中的数据从一个设备到另一个设备的传输,就称为数据流 输入输入/输出的任务实际上就是以一种稳定、可靠的方式在任何设备输出的任务实际上就是以一种稳定、可靠的方式在任何设备 与内存之间传输数据流从内存输出到设备的数据流称为输出流与内存之间传输数据流从内存输出到设备的数据流称为输出流 (Output stream);从设备输入到内存的数据流称为输入流;从设备输入到内存的数据流称为输入流(Input stream)内内 存存键盘键盘文件文件光笔光笔....输入流输入流显示器显示器文件文件打印机打印机...输出流输出流4I/O流的层次结构流的层次结构外部设备外部设备程序程序 变量变量传输管道传输管道(字节流字节流)程序尽量不要直接和千变万化的外部存储设备打交道。

      按照 如此想法设计的输入/输出的逻辑结构如图传输管道内传输的是字节流,因为任何数据都是以字节为单位保存传输管道的左边负责将字节流转换成各种类型的值保存到内存变量, 或将内存变量值转换成字节流传输管道的右边负责将字节流交给外部设备,或将外部设备存储的数 据转换成字节流放到管道中外部设备不关心传递过来的数据是什么类型,只是按照自己的方式将 一个个字节保存起来传输管道的右边负责和具体的外部设备交互,它也不需要知道设备是 如何存储数据,只要知道如何将字节流交给外部设备即可5C++的输入输出流的输入输出流输入输出流被定义为类(输入输出流被定义为类(ios类),若干标准设备的输入输出流类),若干标准设备的输入输出流 类的集合组成流类库,类的集合组成流类库,iostream.h就是其中之一,包含在就是其中之一,包含在C++编译编译 系统的标准库内系统的标准库内C++中的流实际上是一个字节序列中的流实际上是一个字节序列 – 输入操作是控制序列中的字节内容从一个设备流入内存输入操作是控制序列中的字节内容从一个设备流入内存 – 输出操作是控制序列中的字节内容从内存流向某个设备输出操作是控制序列中的字节内容从内存流向某个设备 – 设备可以是键盘、显示器、打印机、磁盘等设备可以是键盘、显示器、打印机、磁盘等内存键盘istream类的操作通过对象cin实现显示器ostream类的操作通过对象cout实现输入文件ifstream类的操作通过用户自定义 对象实现ofstream类的操作通过用户自定义 对象实现输出文件6ios类的结构类的结构ios类及其派生类为用户提供使用流类的接口,是流库中类及其派生类为用户提供使用流类的接口,是流库中 的一个基类,可以派生出许多流类库中的类。

      的一个基类,可以派生出许多流类库中的类iosistreamostreamiostreamifstreamofstreamfstreamiosios类及其派生类的层次结构类及其派生类的层次结构7与iostream类库有关的头文件•在在iostream.h头文件中定义的类有头文件中定义的类有ios, istream, ostream, iostream, istream_withassign, ostream_withassign, iostream_withassign等•iostream.h包含了对输入输出流进行操作所需的基本信息包含了对输入输出流进行操作所需的基本信息 因此大多数因此大多数C++程序都包括程序都包括iostream.h•在在iostream.h头文件中还定义了头文件中还定义了4种流对象种流对象cin, cout, cerr, clog对象名类型功能cinistream处理标准输入,即键盘输入coutostream处理标准输出,即屏幕输出cerrostream处理标准出错信息clogostream处理日志信息8输入流输入流①① 输入运算符输入运算符>>输入运算符“输入运算符“>>”的应用格式如下:的应用格式如下:cin>>>>>>……>>其中,操作数是其中,操作数是C++系统的标准数据类型,在标准库文系统的标准数据类型,在标准库文 件中运算符“件中运算符“>>”已对这些数据类型重载,系统可以自动识别已对这些数据类型重载,系统可以自动识别 其数据类型从而执行正确的操作。

      其数据类型从而执行正确的操作用户也可以在自定义类中按照系统提供的格式对该运算用户也可以在自定义类中按照系统提供的格式对该运算 符进行重载符进行重载注意的是,运算符“注意的是,运算符“>>”用于输入数据时通常跳过输入用于输入数据时通常跳过输入 流中的空格、流中的空格、tab键、换行符等空白字符,即这些空白字符不键、换行符等空白字符,即这些空白字符不 能通过“能通过“>>”输入到指定的存储空间输入到指定的存储空间9②② istream类的成员函数类的成员函数get( )成员函数成员函数get( )可以读入一个字符或一个字符串,它不会可以读入一个字符或一个字符串,它不会 忽略空格、忽略空格、tab键、换行符及其他空白字符,而是将它们也作键、换行符及其他空白字符,而是将它们也作 为字符一并读入为字符一并读入成员函数成员函数get( )有三种形式:有三种形式:(1). int get( );从输入流中读入一个字符,返回该字符的从输入流中读入一个字符,返回该字符的ASCII码值码值例如:例如:char ch;ch=cin.get();10(2). istream从输入流中读入一个字符,将其赋值给从输入流中读入一个字符,将其赋值给ch,同时返回输,同时返回输 入流对象的引用,这表示该函数可以被串联使用。

      入流对象的引用,这表示该函数可以被串联使用例如:例如:char c1,c2,c3;cin.get(c1).get(c2).get(c3);当从键盘输入当从键盘输入a b时,时,c1为为'a',,c2为空格的为空格的ASCII 码码' ',,c3为为'b'11③③istream类的成员函数类的成员函数getline( )成员函数成员函数getline( )与与get()的类似,可以读入一个字符串,的类似,可以读入一个字符串, 并且不会忽略空格、并且不会忽略空格、tab键、换行符及其他空白字符其原型键、换行符及其他空白字符其原型 如下:如下:istream其参数解释与其参数解释与get( )的第的第3种形式相同,惟一与种形式相同,惟一与get()区别区别 的就是在输入结束后,自动丢弃换行符的就是在输入结束后,自动丢弃换行符'\n'或其他结束字符或其他结束字符 delemiter,清空输入流清空输入流12④④istream类的成员函数类的成员函数read( )从输入流中读取指定数量的字符,其函数原型为:从输入流中读取指定数量的字符,其函数原型为:istream从输入流中读取从输入流中读取length个字符至指针个字符至指针str所指向的空间。

      所指向的空间 如果输入设备是键盘,那么当从键盘输入的字符不足如果输入设备是键盘,那么当从键盘输入的字符不足length 时,函数将一直等待输入至满足要求的字符数为止时,函数将一直等待输入至满足要求的字符数为止例如:例如:char str[100];cin.read(str,5);str[5]='\0';//设置字符串结束标志设置字符串结束标志cout时,输出为:时,输出为:abcde13(3). istream从输入流中读取若干个字符至指针从输入流中读取若干个字符至指针str所指向的空间其中,所指向的空间其中, 读入的字符数不多于读入的字符数不多于length-1个,当输入超过个,当输入超过length-1个字符个字符 或遇到换行符或遇到换行符'\n'或其他指定的字符后结束输入或其他指定的字符后结束输入例如:例如:char str[100];cin.get(str, 100, 'a');当从键盘输入:当从键盘输入:study hard时,数组时,数组str中的内容为中的内容为 “study h“注意:当结束输入时,输入流中的换行符注意:当结束输入时,输入流中的换行符'\n'或其他结束或其他结束 字符字符delemiter不会被自动丢弃,仍留在输入流中,作为下次不会被自动丢弃,仍留在输入流中,作为下次 输入的第一个字符。

      因此,在程序中,经常用成员函数输入的第一个字符因此,在程序中,经常用成员函数 ignore()来丢弃这个字符,用来清空输入流来丢弃这个字符,用来清空输入流14输出流输出流①① 输出运算符输出运算符其中,操作数是其中,操作数是C++系统的标准数据类型,在标准库文系统的标准数据类型,在标准库文 件中运算符“件中运算符“>”重载的标准数据类型一致,另外又增加了一个重载的标准数据类型一致,另外又增加了一个 void*类型用户也可以在自定义类中按照系统提供的格式对类型用户也可以在自定义类中按照系统提供的格式对 该运算符进行重载该运算符进行重载15②② ostream类的成员函数类的成员函数put( )成员函数成员函数put()用于输出一个字符,其函数原型为:用于输出一个字符,其函数原型为:ostream将字符将字符ch输出至当前光标处输出至当前光标处由于函数的返回类型为由于函数的返回类型为ostream类的对象引用,因此可类的对象引用,因此可 以串联使用例如:以串联使用例如:cout.put('Y').put('e').put('s');//在屏幕的当前光标处输出在屏幕的当前光标处输出Yes16③③ostream类的成员函数类的成员函数write( )成员函数用于输出一个指定长度的字符串,其函数原型成员函数用于输出一个指定长度的字符串,其函数原型 为:为:ostream将指针将指针str所指向的字符串中前所指向的字符串中前length个字符输出至当前个字符输出至当前 光标处。

      光标处例如:例如:char str[100]={“abcdefg“};cout.write(str,3);//在屏幕的当前光标处输出在屏幕的当前光标处输出abc1715.2.1 输入格式化输入格式化输入格式化比较简单,常用操纵符控制键入的数据以十输入格式化比较简单,常用操纵符控制键入的数据以十 六进制、八进制等的形式进入程序的指定空间六进制、八进制等的形式进入程序的指定空间例例15.1. 多种输入格式多种输入格式includevoid main(){ int a,b,c;cin>>hex>>a; //从键盘输入一个从键盘输入一个16进制数到变量进制数到变量acin>>oct>>b; //从键盘输入一个从键盘输入一个8进制数到变量进制数到变量acin>>dec>>c; //从键盘输入一个从键盘输入一个10进制数到变量进制数到变量acout时,输出时,输出 为:为:17911 注意:操纵符注意:操纵符hex、、oct和和dec的设置的设置 一直有效至另一个操纵符起作用为止一直有效至另一个操纵符起作用为止1815.2.2 输出格式化输出格式化在输出数据时,如果不指定输出格式,系统会根据数据在输出数据时,如果不指定输出格式,系统会根据数据 类型采用默认的输出格式。

      但在有些情况下,需要指定特殊类型采用默认的输出格式但在有些情况下,需要指定特殊 的输出格式,如指定输出域宽,使输出数据左对齐或右对齐,的输出格式,如指定输出域宽,使输出数据左对齐或右对齐, 指定输出的数据有效位数等由于输出格式涉及的内容比较指定输出的数据有效位数等由于输出格式涉及的内容比较 多,在这里就常用的一些格式的设置进行说明多,在这里就常用的一些格式的设置进行说明。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.