C++ 语言电子档_第1页
C++ 语言电子档_第2页
C++ 语言电子档_第3页
C++ 语言电子档_第4页
C++ 语言电子档_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第10章 C+语言的输入/输出操作10.1I/O流类库概述10.2标准文件的输入/输出操作10.3格式输出操作10.4磁盘文件的操作110.1 I/O流类库概述10.1.1 输入/输出流 数据流按其流向可分为输入流和输出流两种。输入流指的是字节流从输入设备流向内存。输出流指的是字节流从内存流向输出设备。2 输入流和输出流都是带有内存缓冲区的。 在C+语言中,将输入流和输出流都分别定义为类,这些类放在C+语言的I/O流类库中,使用它们定义的对象称为流对象。31通用I/O流类库 使用这些功能时应包含头文件iostream.h。2文件I/O流类库 使用有关文件读写操作时,应包含fstream.h文件

2、。10.1.2 I/O流类库的主要功能410.2 标准文件的输入/输出操作1使用预定义的插入符 这是一种最简单的,也是最常用的方式。 格式如下: cout 见书中例10.1,例10.2。 10.2.1 屏幕输出操作5 格式如下: ostream & .put (char c); 见书中例10.3,2使用成员函数put()输出一个字符6 格式如下: cout.write (const char *str, int n) 见书中例10.43使用成员函数write()输出一个字符串 71使用预定义的提取符10.2.2 键盘输入操作 格式如下: cin 从键盘上输入数据是带缓冲区的,输入完数据按回车键

3、时才形成输入流。 输入流中数据项的默认分隔符为空白符。 见书中例10.5,例10.6。8 格式如下: char istream:get() 见书中例10.7。 2使用成员函数get()获取一个字符 9 格式如下: cin.getline(char *buf,int n,char deline=n) 见书中例10.8。3使用成员函数getline()读取一行字符10格式如下: cin.read (char *buf,int n)见书中例10.9。4使用成员函数read()读取若干字符1110.3 格式输出操作10.3.1 使用流对象的成员函数进行格式输出1控制输入/输出格式的标志位 用来控制输入

4、/输出格式的标志位如表10.1所示。 12表10.1ios标志位 标 志 位值含 义输入/输出skipws0 x0001跳过输入中的空白符Ileft0 x0002输出数据按输出域左对齐Oright0 x0004输出数据按输出域右对齐Ointernal0 x0008数据的符号左对齐,数据本身右对齐,符号和数据之间为填充符Odec0 x0010转换基数为十进制形式Ooct0 x0020转换基数为八进制形式I/Ohex0 x0040转换基数为十六进制形式I/Oshowbase0 x0080输出的数值数据前面带有基数符号(0或0 x)I/Oshowpoint0 x0100浮点数输出带有小数点Ouppe

5、rcase0 x0200用大写字母输出十六进制数值Oshowpos0 x0400正数前面带有“+”符号Oscientific0 x0800浮点数输出采用科学表示法Ofixed0 x1000使用定点数形式表示浮点数Ounitbuf0 x2000完成输入操作后立即刷新流的缓冲区Ostdio0 x4000完成输入操作后刷新系统的stdout.stderrO13 下面介绍一些用来控制输出格式的成员函数。(1)设置标志字的成员函数long flags() 该函数返回当前标志字。long flag(long) 该函数使用参数更新标志字,并返回更新前的标志字。long setf(long setbits,

6、long field)2控制输出格式的成员函数14 该函数用来将field参数所指定的标志位清零,将setbits为1的标志位置1,并返回设置前的标志字。long setf(long) 该函数用来设置参数的指定的那些标志位,并返回更新前的标志字。long unsetf(long) 该函数用来清除参数所指定的那些标志位,并返回更新前的标志字。 15(2)设置输出数据所占宽度的成员函数int width() 该函数用来返回当前输出的数据宽度。int width(int) 该函数用来用其参数设置当前输出的数据宽度,并返回更新前的宽度值。 16(3)设置填充符的成员函数char fill()该函数用来

7、返回当前所用的填充符。char fill(char) 该函数用来设置当前的填充符为参数给定的字符,并返回更新前的填充符。 17(4)设置浮点数输出精度的成员函数int precision()该函数用来返回当前浮点数的有效数字的个数。浮点数的精度是用有效数字个数来表示的,其个数越大,表示精度越高。int precision(int)该函数用来设置当前浮点数输出时有效数字个数为该函数所指定的参数值,并返回更新前的值。18 下面给出在默认情况下的某些参数的值: 数据输出宽度默认情况下为实际宽度; 默认情况下填空符为空格符; 单精度浮点数最多提供7位有效数字,双精度浮点数最多提供15位有效数字,长双精

8、度浮点数最多提供19位有效数字。见书中例10.10,例10.11。 19 表10.2中给出了I/O流类库中定义的控制符。使用这些控制符时需包含iomarip.h头文件。10.3.2 使用控制符进行格式输出20表10.2流类库所定义的操作子 操作子名含 义输入/输出dec数值数据采用十进制表示I/Ohex数值数据采用十六进制表示I/Ooct数值数据采用八进制表示I/Osetbase(int n)设置数制转换基数为n(n为0,8,10,16)0表示使用默认基数I/Ows提取空白符Iends插入空字符Oflush刷新与流相关联的缓冲区Oresetiosflags(long)清除参数所指定的标志位I/

9、Osetiosflags(long)设置参数所指定的标志位I/Osetfill(int)设置填充字符Osetprecision(int)设置浮点数输出的有效数字个数Osetw(int)设置输出数据项的域宽O见书中例10.12。2110.4 磁盘文件的操作10.4.1 打开文件和关闭文件操作1打开文件操作 打开文件通常分为两步:先创建流对象,再使用成员函数open()打开指定的文件。 创建流对象又可分两种情况,一种情况是创建fstream类的对象,另一种情况是创建ifstream类或ofstream类的对象。 22 (1)通过创建fstream类对象打开文件的方法 方法一:先创建对象,再打开文件

10、 格式如下: fstream ; .open(,);23表10.3文件访问方式常量 方 式 名用 途in以输入(读)方式打开文件out以输出(写)方式打开文件app以输出追加方式打开ate文件打开时,文件指针位于文件尾trunc如果文件存在,将其长度截断为0,并清除原有内容;如果文件不存在,则创建新文件binary以二进制方式打开文件,默认时为文本方式nocreate打开一个已有文件,如该文件不存在,则打开失败noreplace如果文件存在,除非设置ios:ate或ios:app,否则打开操作失败ios:inlios:out以读和写的方式打开文件ios:outlios:binary以二进制写方

11、式打开文件ios:inlios:binary以二进制读方式打开文件24 方法二:创建对象和打开文件合二为一 其格式如下: fstream (, ); 与前面方法相比较,省略了打开函数的名字open。 25 (2)通过创建istream类对象或ostream类对象打开文件的方法 方法一:先创建对象,再打开文件 格式如下: ofstream ; .open (); 或者 ifstream; .open();26方法二:创建对象同时打开文件格式如下: ofstream ();或者 ifstream ();27格式如下: .close();2关闭文件2810.4.2 文件的输入/输出操作1文本文件的读

12、写操作 在文本文件的读写操作之前,要先打开文件,打开文件时应先创建流对象,打开文件时应指出文件名和访问方式,文件打开后才可以进行读写操作,操作完毕后还要关闭文件。 见书中例10.13,例10.14,例10.15。 29 二进制文件的读写操作与文本文件的读写操作基本相同,所不同的仅在于对二进制文件来说打开时需要加上ios:binary方式。另外,用于二进制文件读写函数通常使用read()函数和write()函数。 见书中例10.16。2二进制文件的读写操作3010.4.3 随机文件操作 C+语言中所提供的定位读、写指针的函数。 在类istream中定义的定位读指针的成员函数有如下几种: istream & istream:seekg (); istream & istream:seekg(, ); long int & istream:tellg();31 在类ostream中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论