C++文件输入输出流_第1页
C++文件输入输出流_第2页
C++文件输入输出流_第3页
C++文件输入输出流_第4页
C++文件输入输出流_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

C+文件输入输出流文件操作在操作系统的底层中十分复杂。然而,C+已经为我们做了文件操作的绝大部分工作。程序员只要以流的概念来实施文件操作即可。文件有两种,一种是文本文件,其内容总是与字符码表(如ASCII码)对应。另一种是二进制文件,可以将内容看成0/1串。本次课我们只讨论C+中文本文件的读写。一、 文件输入流类 ifstreamIifstream是文件输入流类的类名。定义一个该类的对象,即可将该对象和一个文件建立联系。例如, ifstream fin(“a.txt”) 表示定义一个文件输入流类的对象fin,并将该对象与当前目录下的a.txt文件建立联系,以后可以用该对象从a.txt中读取数据。【例1 按行读取一个文本文件的所有内容,并输出到屏幕。】#include #include /使用ifstream类需要包含头文件 fstream#include /使用string类需要包含头文件 stringusing namespace std;int main()ifstream fin(in.txt); /默认打开文本文件string str;while (getline(fin, str)coutstra)couta; /若读入失败,则跳过couta;if (getline(in, str)coutstr; /若读入失败,则跳过couta; /若文件流状态正常,则输入所以在循环读入数据时,常常将读入操作放在循环的条件判断上,这样既省事,又明白。【例2 从文本文件中读取整数。假设有文本文件a.txt,其内容如下:3121011316输出其中所有的偶数。】#include #include /使用ifstream类需要包含头文件 fstreamusing namespace std;int main()ifstream in(a.txt);int x;while (inx)if (x % 2 = 0)coutxendl;return 0;41tom20170.52jack19185.93rose 21165.34white 19170【例3 从文本文件中读取不同类型的数。假设有文本文件a.txt,其内容如下:该文件第一行的整数n表示接下来会有n行数据。统计其中所有同学的平均年龄和平均身高。】#include #include /使用ifstream类需要包含头文件 fstream#include using namespace std;struct studentint num;string name;int age;double height;int main()ifstream fin(a.txt);student *stu;int size;double aveAge = 0, aveHeight = 0;finsize;stu = new studentsize;int i;for (i = 0; i stui.agestui.height;aveAge += stui.age;aveHeight += stui.height;aveAge /= size;aveHeight /= size;cout平均年龄:taveAgeendl;cout平均身高:taveHeightendl;return 0;二、 文件输出流类 ofstreamofstream是文件输出流类的类名。定义一个该类的对象,即可将该对象和一个文件建立联系。例如, ofstream fout(“a.txt”) 表示定义一个文件输出流类的对象fout,并将该对象与当前目录下的a.txt文件建立联系,以后可以用该对象向a.txt中输出数据。 文件输出流类对象的使用与cout的使用完全相同。三、编程(来源:浙江工业大学ACM训练网站:/ProblemList.aspx)1、A+B Problem Time Limit:1000MS Memory Limit:1024KDescription:Calculate a + b Input:The input will consist of a series of pairs of integers a and b,separated by a space, one pair of integers per line, 0 0 means the end of the input, and do not need to output. Output:For each pair of input integers a and b you should output the sum of a and b in one line,and with one line of output for each line in input. Sample Input:1 50 0Sample Output:62、逆反的01串 Time Limit:1000MS Memory Limit:32768KDescription:Fans是个ACM程序设计迷。有时侯,他表现出很强烈的逆反心理,你往东,他往西,你往南,他偏往北。这一次,不知道又是谁惹着他了,好端端的一个个01串,到了他的手里,都变成10串了。请你编个程序来模仿他的行为,将01串(长度200),全变成10串吧。 Sample Input:01101001001001000000010000000000Sample Output:100101101101101111111011111111113、神奇的fans Time Limit:1000MS Memory Limit:32768KDescription:传说fans是一个数学天才。在他五岁那年,从一堆数字卡片中选出了4张卡片:5,7,6,8。这4个数字有什么神秘之处呢?如果把这4张卡片自左往右的排成:5,6,7,8。你就会发现:原来这4个数字构成了等差数列!当年fans选出了n组卡片,据说都能够构成等差数列。但是事实真的是这样吗?fans真的有这么神奇吗? n组数据就是fans选出的n组卡片,请你判断每一组卡片是否能构成等差数列,如果能够构成等差数列,输出“yes”,否则输出“no”。文件中第一个数为数据的组数n,表示后面有n行,每行中的第一个数为该组数据的元素个数m(1m100),其后是m个正整数(不会超出int的表示范围)。 Sample Input:24 5 7 6 88 1 7 3 2 8 12 78 3Sample Output:yesno4、对称串 Time Limit:10

温馨提示

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

评论

0/150

提交评论