




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+面向对象程序设计面向对象程序设计输入输出流输入输出流第第7章章2本章内容本章内容p7.1 C+的输入和输出的输入和输出p7.2 标准输出流标准输出流p7.3 标准输入流标准输入流p7.4 文件操作与文件流文件操作与文件流p7.5 字符串流字符串流3目标目标q理解理解C+C+输入输出流及相关概念输入输出流及相关概念()()q理解标准输出流对象的使用及输出格式控制理解标准输出流对象的使用及输出格式控制()()q理解标准输入流对象及输入流的成员函数的使用理解标准输入流对象及输入流的成员函数的使用()()q理解文件概念、文件流与文件流对象的相关知识理解文件概念、文件流与文件流对象的相关知识 ()(
2、)q理解二进制和文本文件的操作理解二进制和文本文件的操作()()4第第7章章 输入输出流输入输出流p7.1 C+的输入和输出的输入和输出p7.2 标准输出流标准输出流p7.3 标准输入流标准输入流p7.4 文件操作与文件流文件操作与文件流p7.5 字符串流字符串流57.1 C+的输入和输出的输入和输出 q(一)输入输出的含义(一)输入输出的含义q(二)(二)C+C+的的I/0I/0对对C C的发展的发展q(三)(三)C+C+的输入输出流的输入输出流67.1 C+的输入和输出的输入和输出 (一)输入输出的含义(一)输入输出的含义p程序的程序的输入输入是指从输入文件将数据传送给程序,是指从输入文件
3、将数据传送给程序,输出输出是指将数据传送给输出文件。是指将数据传送给输出文件。 如:如:从键盘输入数据给程序、将程序运行结果显从键盘输入数据给程序、将程序运行结果显示在显示器上等。示在显示器上等。p从从操作系统的角度操作系统的角度来看,每一个与主机相连的来看,每一个与主机相连的输输入输出设备都被看作文件入输出设备都被看作文件。文件是输入输出操作。文件是输入输出操作的对象。的对象。 pC+C+系统提供庞大的系统提供庞大的I/OI/O类库类库, ,调用不同的类去实现调用不同的类去实现不同的功能不同的功能. .77.1 C+的输入和输出的输入和输出 (一)输入输出的含义(一)输入输出的含义qC+C+
4、的输入与输出包括以下的输入与输出包括以下3 3方面的内容:方面的内容: (1 1)对系统指定的)对系统指定的标准设备标准设备的输入和输出,称为的输入和输出,称为标准的输入输出标准的输入输出,简称,简称标准标准I/0I/0。 (2 2)以)以外存磁盘文件外存磁盘文件为对象进行输入和输出,称为对象进行输入和输出,称为为文件的输入输出文件的输入输出,简称,简称文件文件I/OI/O。 (3 3)对)对内存中指定的空间内存中指定的空间进行输入和输出,称为进行输入和输出,称为字符串输出输出字符串输出输出,简称,简称串串I/OI/O。87.1 C+的输入和输出的输入和输出 (二)(二)C+C+的的I/OI/
5、O对对C C的发展的发展p类型安全类型安全 C+C+为了兼容为了兼容C C,保留了用,保留了用printfprintf和和scanfscanf进行输进行输出输入的方法。出输入的方法。 C+C+在输入输出中添加了,编译系统对数据类型在输入输出中添加了,编译系统对数据类型的严格检查。类型不正确的数据不能通过编译。的严格检查。类型不正确的数据不能通过编译。 p可扩展性可扩展性 C+C+的的I/OI/O除了可以输入输出标准类型的数据以除了可以输入输出标准类型的数据以外,还可以输入输出用户自定义数据类型。外,还可以输入输出用户自定义数据类型。 97.1 C+的输入和输出的输入和输出 (三)(三)C+C+
6、的输入输出流的输入输出流pC+C+的输入输出流简介的输入输出流简介 “流流”就是数据流,是字符序列在主机与外部就是数据流,是字符序列在主机与外部介质之间的介质之间的流动流动,它负责在数据的产生者和使用,它负责在数据的产生者和使用者之间建立联系,并管理数据的流动。者之间建立联系,并管理数据的流动。 具有方向性。具有方向性。 内内存存输输出出缓缓冲冲区区输输入入缓缓冲冲区区输输出出设设备备输输入入设设备备数据数据形成形成cin流流 数据数据形成形成cout流流107.1 C+的输入和输出的输入和输出 (三)(三)C+C+的输入输出流的输入输出流qC+C+中,输入输出流被定义为类,称为中,输入输出流
7、被定义为类,称为流类流类,用流,用流类定义的对象称为类定义的对象称为流对象流对象(cincin,coutcout)。)。qC+C+提供的用于输入输出的提供的用于输入输出的iostreamiostream类库存。类库存。 (查看(查看P222 P222 表表7.17.1)qC+C+的流库(的流库(streamlibrarystreamlibrary)是用继承方法建立)是用继承方法建立起来的一个输入输出类库。起来的一个输入输出类库。 (查看(查看P223 P223 图图7.37.3 )117.1 C+的输入和输出的输入和输出 (三)(三)C+C+的输入输出流的输入输出流p 与与iostreamio
8、stream类库有关的头文件类库有关的头文件 iostreamiostream:包含使用标准输入输出流所需的所有声明和定包含使用标准输入输出流所需的所有声明和定义。它包含四个标准流对象:义。它包含四个标准流对象:cincin 、coutcout、cerrcerr、clogclog,提供了无格式和格式化的提供了无格式和格式化的I/OI/O功能。功能。 fstreamfstream:包含有关文件处理的信息,提供建立文件和读写包含有关文件处理的信息,提供建立文件和读写文件等各种操作的接口。文件等各种操作的接口。 strstreamstrstream:用于字符串流的用于字符串流的i/oi/o。 std
9、iostreamstdiostream:用于混合使用用于混合使用C C和和C+C+的的I/OI/O机制。机制。 iomanipiomanip:在使用格式化在使用格式化I/OI/O时包含此头文件。时包含此头文件。127.1 C+的输入和输出的输入和输出 (三)(三)C+C+的输入输出流的输入输出流p在在iostreamiostream头文件中定义的流对象头文件中定义的流对象C+C+中标准流设备名称中标准流设备名称 默认设备默认设备默认含义默认含义cincin键盘键盘标准输入标准输入coutcout屏幕屏幕标准输出标准输出cerrcerr屏幕屏幕标准错误输出标准错误输出clogclog打印机打印机
10、标准错误输出标准错误输出13第第7章章 输入输出流输入输出流p7.1 C+的输入和输出的输入和输出p7.2 标准输出流标准输出流p7.3 标准输入流标准输入流p7.4 文件操作与文件流文件操作与文件流p7.5 字符串流字符串流147.4 文件操作与文件流文件操作与文件流 n (一)文件的概念(一)文件的概念n (二)文件流类和文件流对象(二)文件流类和文件流对象n (三)文件的打开与关闭(三)文件的打开与关闭n (四)对(四)对ASCIIASCII文件的操作文件的操作n (五)对二进制文件的操作(五)对二进制文件的操作157.4 文件操作与文件流文件操作与文件流 (一)文件的概念(一)文件的概
11、念n 文件:文件:指存储在外部介质上的数据集合,操作系指存储在外部介质上的数据集合,操作系统以文件为单位对数据进行管理。统以文件为单位对数据进行管理。 n 根据根据存储格式存储格式可以把文件分为两种类型:可以把文件分为两种类型:nASCIIASCII码文件(码文件(文本文件文本文件)n内部内部格式文件(格式文件(二进制文件二进制文件)。)。 n 如:如:100100n 文本:文本:00110001 00110000 00110000-3B00110001 00110000 00110000-3Bn 二进制:二进制:01100100-1B01100100-1B167.4 文件操作与文件流文件操作
12、与文件流 n (一)文件的概念(一)文件的概念n (二)文件流类和文件流对象(二)文件流类和文件流对象n (三)文件的打开与关闭(三)文件的打开与关闭n (四)对(四)对ASCIIASCII文件的操作文件的操作n (五)对二进制文件的操作(五)对二进制文件的操作177.4 文件操作与文件流文件操作与文件流 (二)文件流类和文件流对象(二)文件流类和文件流对象n 文件流文件流:以外存文件为输入输出对象的数据流。:以外存文件为输入输出对象的数据流。 n 文件流与文件是有区别的。文件流与文件是有区别的。 文件流本身不是文件,只是文件流本身不是文件,只是以文件为输入输出以文件为输入输出对象的流对象的流
13、。 文件流不是若干个文件组成的流。文件流不是若干个文件组成的流。 n C+C+对文件的读写操作包含对文件的读写操作包含3 3个基本步骤:个基本步骤:n建立一个文件流对象把文件流对象与实际文件建立一个文件流对象把文件流对象与实际文件相关联,称为相关联,称为打开文件打开文件;n对文件流进行对文件流进行读读/ /写写操作;操作;n关闭文件关闭文件。187.4 文件操作与文件流文件操作与文件流 (二)文件流类和文件流对象(二)文件流类和文件流对象n C+C+的的I/OI/O类库中定义了三种文件类,专门用于文类库中定义了三种文件类,专门用于文件操作。件操作。ifstreamifstream类:类:从从i
14、streamistream类派生,用来支持磁盘文类派生,用来支持磁盘文件的输入。件的输入。ofstreamofstream类:类:从从ostreamostream类派生,用来支持磁盘文类派生,用来支持磁盘文件的输出。件的输出。fstreamfstream类:类:从从iostreamiostream类派生,用来支持磁盘文类派生,用来支持磁盘文件的输入和输出。件的输入和输出。197.4 文件操作与文件流文件操作与文件流 n (一)文件的概念(一)文件的概念n (二)文件流类和文件流对象(二)文件流类和文件流对象n (三)文件的打开与关闭(三)文件的打开与关闭n (四)对(四)对ASCIIASCII
15、文件的操作文件的操作n (五)对二进制文件的操作(五)对二进制文件的操作207.4 文件操作与文件流文件操作与文件流 (三)文件的打开与关闭(三)文件的打开与关闭n 打开文件打开文件打开文件操作包括建立文件流对象,与外部文件关打开文件操作包括建立文件流对象,与外部文件关联,指定文件的打开方式。联,指定文件的打开方式。 打开文件有两种方式:打开文件有两种方式:方式一:方式一:先建立流对象,后调用先建立流对象,后调用openopen连接外部文件。连接外部文件。 流类流类 对象名对象名; ; 对象名对象名.open.open( (文件名文件名, ,打开方式打开方式););方式二:方式二:调用流类带参
16、数的构造函数,建立对象的同调用流类带参数的构造函数,建立对象的同时连接外部文件。时连接外部文件。 流类流类 对象名对象名( (文件名文件名, ,打开方式打开方式););217.4 文件操作与文件流文件操作与文件流 (三)文件的打开与关闭(三)文件的打开与关闭n 打开文件打开文件方式一:方式一: 流类流类 对象名对象名; ; 对象名对象名.open.open( (文件名文件名, ,打开方式打开方式););方式二:方式二: 流类流类 对象名对象名( (文件名文件名, ,打开方式打开方式);); “ “流类流类”是流类库中定义的文件流类,是流类库中定义的文件流类,ifstreamifstream用于
17、读方式打开文件用于读方式打开文件 ,ofstreamofstream用于写方式打开用于写方式打开文件,而文件,而fstreamfstream用于读用于读/ /写方式打开文件。写方式打开文件。 “打开方式打开方式”是是iosios定义的标识常量,表示文件的定义的标识常量,表示文件的访问方式(访问方式(查看表查看表7-77-7)。)。 用户定义标识符用户定义标识符外部文件名外部文件名227.4 文件操作与文件流文件操作与文件流 (三)文件的打开与关闭(三)文件的打开与关闭n 打开文件打开文件方式一:方式一: 流类流类 对象名对象名; ; 对象名对象名.open.open( (文件名文件名, ,打开
18、方式打开方式););方式二:方式二: 流类流类 对象名对象名( (文件名文件名, ,打开方式打开方式);); ifstream infile; infile.open(“d:file1.txt”,ios:in); fstream rwfile(“d:file3.txt”,ios:in|ios:out); 237.4 文件操作与文件流文件操作与文件流 (三)文件的打开与关闭(三)文件的打开与关闭n 打开文件打开文件说明事项:说明事项:新版本新版本C+C+的的I/OI/O类库中不提供类库中不提供ios:nocreateios:nocreate和和ios:noreplaceios:noreplace
19、。 每个打开的文件都有一个每个打开的文件都有一个文件指针文件指针,它的初始位置,它的初始位置由由I/OI/O方式决定。方式决定。可以用可以用“|”|”位或运算符位或运算符对输入输出方式进行组合。对输入输出方式进行组合。如果如果打开失败,打开失败,openopen函数返回函数返回0 0值值。可据此测试打。可据此测试打开是否成功。开是否成功。 247.4 文件操作与文件流文件操作与文件流 (三)文件的打开与关闭(三)文件的打开与关闭n 关闭文件关闭文件当一个文件读写操作完毕后,应及时关闭文件。当一个文件读写操作完毕后,应及时关闭文件。关闭文件操作主要完成将缓冲区数据完整地写入文关闭文件操作主要完成
20、将缓冲区数据完整地写入文件,添加文件结束标志,切断流对象和外部文件的件,添加文件结束标志,切断流对象和外部文件的连接等任务。连接等任务。 关闭文件方式:关闭文件方式: 对象名对象名.close.close( );( );n 例:例:257.4 文件操作与文件流文件操作与文件流 #include #include using namespace std;int main() ofstream outfile(d:f1.txt,ios:out); if(!outfile) cout打开文件错误!打开文件错误!endl; outfile.close(); return 0;267.4 文件操作与文件
21、流文件操作与文件流 n (一)文件的概念(一)文件的概念n (二)文件流类和文件流对象(二)文件流类和文件流对象n (三)文件的打开与关闭(三)文件的打开与关闭n (四)对(四)对ASCIIASCII文件的操作文件的操作n (五)对二进制文件的操作(五)对二进制文件的操作277.4 文件操作与文件流文件操作与文件流 (四)对(四)对ASCIIASCII文件的操作文件的操作n ASCIIASCII文件:文件:文件的每一个字节中均以文件的每一个字节中均以ASCIIASCII码形式码形式存放数据,即一个字节存放一个字符。存放数据,即一个字节存放一个字符。n ASCIIASCII文件的读写操作有两种形
22、式:文件的读写操作有两种形式:用用“”输入输出标准类型的数据。输入输出标准类型的数据。用文件流中的用文件流中的put,get,getline等成员函数等成员函数进行进行字符的输入输出。字符的输入输出。 n 例:整形数组含例:整形数组含3 3个元素,将他们存到文件中,并个元素,将他们存到文件中,并取出来,在屏幕上显示。取出来,在屏幕上显示。287.4 文件操作与文件流文件操作与文件流 n (一)文件的概念(一)文件的概念n (二)文件流类和文件流对象(二)文件流类和文件流对象n (三)文件的打开与关闭(三)文件的打开与关闭n (四)对(四)对ASCIIASCII文件的操作文件的操作n (五)对二
23、进制文件的操作(五)对二进制文件的操作297.4 文件操作与文件流文件操作与文件流 (五)对二进制文件的操作(五)对二进制文件的操作n 二进制文件:二进制文件:将内存中数据存储形式不加转换地传将内存中数据存储形式不加转换地传送到磁盘文件中,即以二进制形式存储信息。送到磁盘文件中,即以二进制形式存储信息。n 打开二进制文件时,必须要指定打开二进制文件时,必须要指定ios:binaryios:binary。n 用成员函数用成员函数readread和和writewrite读写二进制文件读写二进制文件istream& read(char *buffer,int len);ostream&
24、; write(const char *buffer,int len); 指向内存中一段存储空间指向内存中一段存储空间读写的字节数读写的字节数307.4 文件操作与文件流文件操作与文件流q(五)对二进制文件的操作(五)对二进制文件的操作q例:将三个学生的信息存到二进制文件中,学生例:将三个学生的信息存到二进制文件中,学生定义如下:定义如下:struct studentchar name20; int num; int age; char sex;317.4 文件操作与文件流文件操作与文件流 (五)对二进制文件的操作(五)对二进制文件的操作n与文件指针相关的流成员函数与文件指针相关的流成员函数(
25、P254 (P254 表表7.77.7)文件指针相对移动函数文件指针相对移动函数 移动读指针:移动读指针: seekg(); 移动写指针:移动写指针:seekp();32练习练习q例例7.13 从键盘中读入一行字符,将其中的字从键盘中读入一行字符,将其中的字母字符依次存入母字符依次存入f2.dat中,再将文件中的内容读中,再将文件中的内容读入程序,将小写字母改成大写字母,存入入程序,将小写字母改成大写字母,存入f3.dat中。中。q思考:何种文件形式?思考:何种文件形式?q阅读分析例阅读分析例7.1633实验十一实验十一 文件操作文件操作q实验内容:课后第实验内容:课后第5题题q实验时间:周五
26、三单元实验时间:周五三单元q实验报告:十六周周二一单元上交实验报告:十六周周二一单元上交34小结小结n(一)文件的概念(一)文件的概念n(二)文件流类和文件流对象(二)文件流类和文件流对象n(三)文件的打开与关闭(三)文件的打开与关闭n(四)对(四)对ASCIIASCII文件的操作文件的操作n(五)对二进制文件的操作(五)对二进制文件的操作357.4 文件操作与文件流文件操作与文件流 (五)对二进制文件的操作(五)对二进制文件的操作n 与文件指针相关的流成员函数与文件指针相关的流成员函数 参照位置:参照位置:ios:curios:cur 当前位置当前位置ios:endios:end 结尾结尾i
27、os:begios:beg 开头开头q 例:例:infile.seekg(100)infile.seekg(100) infile.seekg(-50,ios:cur) infile.seekg(-50,ios:cur)Outfile.seekg(10,ios:beg)Outfile.seekg(10,ios:beg)36第第7章章 输入输出流输入输出流p7.1 C+的输入和输出的输入和输出p7.2 标准输出流标准输出流p7.3 标准输入流标准输入流p7.4 文件操作与文件流文件操作与文件流p7.5 字符串流字符串流377.2 标准输出流标准输出流 (一)(一)coutcout、cerrcer
28、r、clogclog流对象流对象qcoutcout它是它是ostreamostream流类的对象,表示流向显示器的数据,流类的对象,表示流向显示器的数据,用流用流插入插入运算符运算符“”顺序加入。顺序加入。用用“coutcout”可以直接输出基本类型数据。可以直接输出基本类型数据。 例:例:intint a,ba,b; ; coutcoutab;ab;如果想输出用户定义数据类型,必须先进行运算如果想输出用户定义数据类型,必须先进行运算符的重载。符的重载。 例:例:定义定义complexcomplex类,实现该对象的输出。类,实现该对象的输出。 complexcomplex c1; c1; co
29、utcoutc1;c1; ostreamostream & &opeatoropeator(ostreamostream &,complex &); &,complex &); 387.2 标准输出流标准输出流 (一)(一)coutcout、cerrcerr、clogclog流对象流对象qcerrcerr:是标准出错流,被指定为与显示器关联,是标准出错流,被指定为与显示器关联,它的作用是向标准出错设备输出有关出错信息。它的作用是向标准出错设备输出有关出错信息。例:例:(查看(查看P227 例例7.1)pclogclog:是标准出错流,作用也是在终
30、端显示器上是标准出错流,作用也是在终端显示器上显示出错信息。显示出错信息。pcerrcerr与与clogclog的区别:的区别:cerrcerr不经过缓冲区,直接向显示器输出有关信息。不经过缓冲区,直接向显示器输出有关信息。clogclog中的信息存放在缓冲区中,缓冲区满或遇到中的信息存放在缓冲区中,缓冲区满或遇到endlendl时才向显示器输出。时才向显示器输出。 397.2 标准输出流标准输出流 (二)格式输出(二)格式输出q使用控制符控制输出格式使用控制符控制输出格式( (查看查看P228 P228 表表7.3)7.3) coutcoutdecdecaa”从流中提取数据。从流中提取数据。
31、p流提取符流提取符“”从流中提取数据时通常跳过输入从流中提取数据时通常跳过输入流中的流中的空格、空格、TabTab键、换行符等键、换行符等空白字符。空白字符。 p只有只有输入完数据再按回车健后输入完数据再按回车健后,该行数据才被送,该行数据才被送入键盘缓冲区,形成输入流,流提取符入键盘缓冲区,形成输入流,流提取符“”才才能从中提取数据。能从中提取数据。43(一)(一)cincin流流 (补充)(补充)pCinCin有自己状态值,错误时为有自己状态值,错误时为0 0p例例qInt a; cina;/a=ssdlkq处理:处理:q cin.clear();/清除错误标志清除错误标志qcin.syn
32、c();/清空缓存清空缓存447.3 标准输入流标准输入流 (二)用于字符输入的流成员函数(二)用于字符输入的流成员函数p用用getget函数读入一个字符。函数读入一个字符。pgetget函数有函数有三种形式三种形式:cin.get( )cin.get( )cin.get(cin.get(字符变量字符变量) ) 作用:作用:将读入字符赋值给指定的字符变量。将读入字符赋值给指定的字符变量。cin.get(cin.get(字符数组,字符个数字符数组,字符个数n n,终止字符,终止字符) ) 作用:作用:从输入流中读取从输入流中读取n-1n-1个字符,赋给指定的字个字符,赋给指定的字符数组。如果在读
33、取符数组。如果在读取n-1n-1个字符前遇到终止字符,个字符前遇到终止字符,则提前结束读取。则提前结束读取。457.3 标准输入流标准输入流 (二)用于字符输入的流成员函数(二)用于字符输入的流成员函数p用用getget函数的例题:函数的例题:/第一种形式:第一种形式:#include using namespace std;int main()char c; coutenter a sentence:endl; while(c=cin.get()!=EOF) /输入输入ctrl+z结束结束 cout.put(c); return 0;467.3 标准输入流标准输入流 (二)用于字符输入的流成员函数(二)用于字符输入的流成员函数p用用getget函数的例题:函数的例题:/第二种形式:第二种形式:#include using namespace std;int main()char c; coutenter a sentence:endl; while(cin.get(c) /输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国搪瓷国际列车牌行业投资前景及策略咨询研究报告
- 2025-2030中国制动器总成行业发展前景及发展策略与投资风险研究报告
- 影响力与说服力的培育计划
- 四川省泸州市合江县马街中学校2023-2024学年高一上学期期末数学试题 无答案
- 重庆市渝北中学2023-2024学年高三上学期10月月考语文 无答案
- 辽宁省锦州市2023-2024学年高一上学期期末考数学含解析
- 学期目标设定与实现路径计划
- 急诊科人力资源配置分析计划
- 生物教师职业发展规划计划
- 水利行业月个人工作计划
- 3.1《百合花》课件 统编版高一语文必修上册
- 会展营销学知到智慧树章节测试课后答案2024年秋上海旅游高等专科学校
- 主动脉球囊反搏术(IABP)护理
- 产后抑郁症的原因及护理文献汇报
- 《关于加强中小学地方课程和校本课程建设与管理的意见》专题培训
- 2025年中考物理押题猜想卷(苏州卷)(全解全析)
- 《半导体行业发展历程》课件
- 新能源开发知识培训课件
- 精神科患者冲动伤人应急演练
- 《煤矿典型事故案例分析》培训课件2025
- 《儿童保健学绪论》课件
评论
0/150
提交评论