第2章文件操作内容提要口文件流类型(fstream)口读写二进制文件(read、write)口打开文件和关闭文件(open、close)随机读写文件(seep、seekg)口读写文本文件(流操作符、成员函数)口流对象作为函数参数2.1文件流类型(fstream)2.2打开文件和关闭文件(open、close)2.3读写文本文件(流操作符、成员函数)练习2.1(文本输出)编写一个程序,要求用户输入文件名,在屏幕上显示文件的内容。在显示时,每行前面都要带上一个行号和一个冒号。行号从1开始,例如:1: This a test2: for you.3:Dateis2022531如果一屏显示不完文件的内容,那么显示24行后,暂停一下,等待用户按任意键以后继续显示后面的24行。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。白练习2.2(词频统计)编写一个程序,提示用户输入一个文本文件名,统计该文件中各个单词出现的次数。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。练习2.3(文本复制)编写一个程序,定义fstream对象in,与文本文件filel.txt建立关联,然后定义fstream对象out,与文本文件file2.txt建立关联。打开文本文件filel.txt成功后,将其内容逐个字符读出,将小写字母转换成大写字母,并输出到file2.txt中。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。练习2.4(文本追加)编写一个程序,定义fstream对象in,与文本文件filel.txt建立关联,然后定义fstream对象out,与文本文件file2.txt建立关联。打开文本文件filel.txt成功后,将其内容追加到file2.txt的尾部。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。练习2.5(文本加解密)编写一个文件加密解密程序。首先,将一个文件中的内容,按照一定的方法,对每个字符加密后存储到第二个文件中。尽管加密技术很多,你可以采用一种简单的加密方法,例如将每个字母的ASCI码加2。然后,将这个加密文件解密,然后写到第三个文件中。采用编辑器(如记事本)创建一个文本文件,以测试这个程序
第 2 章 文件操作 内容提要 h 文件流类型(fstream) h 打开文件和关闭文件(open、close) h 读写文本文件(流操作符、成员函数) h 读写二进制文件(read、write) h 随机读写文件(seep、seekg) h 流对象作为函数参数 2.1 文件流类型(fstream) 2.2 打开文件和关闭文件(open、close) 2.3 读写文本文件(流操作符、成员函数) 练习 2.1(文本输出)编写一个程序,要求用户输入文件名,在屏幕上显示文件的内容。在显 示时,每行前面都要带上一个行号和一个冒号。行号从 1 开始,例如: 1: This a test 2: for you. 3: Date is 2022 5 31. 如果一屏显示不完文件的内容,那么显示 24 行后,暂停一下,等待用户按任意键以后继续显 示后面的 24 行。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。 练习 2.2(词频统计)编写一个程序,提示用户输入一个文本文件名,统计该文件中各个单词 出现的次数。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。 练习 2.3(文本复制)编写一个程序,定义 fstream 对象 in,与文本文件 file1.txt 建立关联,然 后定义 fstream 对象 out,与文本文件 file2.txt 建立关联。打开文本文件 file1.txt 成功后,将其 内容逐个字符读出,将小写字母转换成大写字母,并输出到 file2.txt 中。采用编辑器(如记事 本)创建一个文本文件,以测试这个程序。 练习 2.4(文本追加)编写一个程序,定义 fstream 对象 in,与文本文件 file1.txt 建立关联,然 后定义 fstream 对象 out,与文本文件 file2.txt 建立关联。打开文本文件 file1.txt 成功后,将其 内容追加到 file2.txt 的尾部。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。 练习 2.5(文本加解密)编写一个文件加密解密程序。首先,将一个文件中的内容,按照一定 的方法,对每个字符加密后存储到第二个文件中。尽管加密技术很多,你可以采用一种简单 的加密方法,例如将每个字母的 ASCII 码加 2。然后,将这个加密文件解密,然后写到第三个 文件中。采用编辑器(如记事本)创建一个文本文件,以测试这个程序
作者:陈哲2.4读写二进制文件(read、write)2.4读写二进制文件(read、write)练习2.6(学生成绩读写)编写一个程序,实现以下功能:1.输入10个学生信息(包括姓名、学号和三门课程成绩),将学生信息存入一个学生结构体数组,然后将数组存入二进制文件student.dat中;2.从student.dat文件中读出这些信息并显示到屏幕。练习2.7(学生通讯录管理)编写一个程序,将下面的学生信息存储到二进制文件中:白1.name:具有21个元素的字符数组;2.age:一个整型变量。输入的年龄不能为负,也不能大于200;3.address:具有51个元素的字符数组;4.phone:具有14个元素的字符数组;5.E-mail:具有51个元素的字符数组。该程序具有一个菜单,便于用户完成如下操作:1.向文件增加记录;2.显示文件中的所有记录;3.按照姓名查找某个学生的记录;4.按照姓名查找并修改某个学生的记录:5.按照姓名查找并删除某个学生的记录;6.统计文件中学生的个数、计算学生的平均年龄。2.5随机读写文件(seep、seekg)练习2.8读程序,写输出结果。#include <iostream>#include <fstream>using namespace std;int mainOfstreamfile("nums.txt",ios:inios::outios:trunc);char ch;if (! file)exit (O);file <<"123456789";cout << file . tellp O;file .seekg(3L, ios ::beg);file .get(ch);cout << ch;file .seekg(-3L, ios :: end);file .get(ch);cout << ch;
作者:陈哲 2.4 读写二进制文件(read、write) 2.4 读写二进制文件(read、write) 练习 2.6(学生成绩读写) 编写一个程序,实现以下功能: 1. 输入 10 个学生信息(包括姓名、学号和三门课程成绩),将学生信息存入一个学生结构 体数组,然后将数组存入二进制文件 student.dat 中; 2. 从 student.dat 文件中读出这些信息并显示到屏幕。 练习 2.7(学生通讯录管理) 编写一个程序,将下面的学生信息存储到二进制文件中: 1. name:具有 21 个元素的字符数组; 2. age:一个整型变量。输入的年龄不能为负,也不能大于 200; 3. address:具有 51 个元素的字符数组; 4. phone:具有 14 个元素的字符数组; 5. E-mail:具有 51 个元素的字符数组。 该程序具有一个菜单,便于用户完成如下操作: 1. 向文件增加记录; 2. 显示文件中的所有记录; 3. 按照姓名查找某个学生的记录; 4. 按照姓名查找并修改某个学生的记录; 5. 按照姓名查找并删除某个学生的记录; 6. 统计文件中学生的个数、计算学生的平均年龄。 2.5 随机读写文件(seep、seekg) 练习 2.8 读程序,写输出结果。 #include <iostream> #include <fstream> using namespace std; int main() { fstream file ("nums.txt" , ios :: in | ios :: out | ios :: trunc ) ; char ch; if (! file ) exit (0) ; file << "123456789"; cout << file . tellp () ; file . seekg(3L, ios :: beg); file . get (ch); cout << ch; file . seekg(−3L, ios :: end); file . get (ch); cout << ch; 9
作者:陈哲2.6流对象作为函数参数file .seekg(-3L, ios :: cur);file . get(ch);cout <<ch;cout << file . tellg O;file .close O;return 0;2.6流对象作为函数参数第2章作业1.文本输出:编写一个程序,要求用户输入文件名,在屏幕上显示文件的内容。在显示时,每行后面都要带上一个冒号和该行的单词数目。例如:Thisatest:3foryou.:2Date is 20225 31. : 5如果一屏显示不完文件的内容,那么显示24行后,暂停一下,等待用户按任意键以后继续显示后面的24行。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。2.文本转存:编写一个文件转存程序。首先,将输入文件中的每一行的单词逆序排列后存储到第二个文件中。然后,将输入文件中的每一行的单词按字典序排列后存储到第三个文件中。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。3.酒店客房管理:编写一个程序,将下面的酒店客房信息存储到二进制文件中:(a).id:客房号,具有10个元素的字符数组;(b).price:价格,整型变量。价格不能为负,也不能大于10000;(c).booked:是否已经被预订(包括已入住,但可能尚未入住),布尔变量;(d).cname:住客姓名,具有20个元素的字符数组;(e).cid:住客身份证号码,具有20个元素的字符数组。该程序具有一个菜单,便于用户完成如下操作:(a).增加客房信息:向文件增加记录:(b).删除客房信息:从文件删除记录;(c).显示客房信息:显示文件中的所有记录;(d).预订客房功能:修改某个客房的预订记录;(e).办理入住功能:修改某个客房的住客记录;(f).按照姓名查找某个住客的客房号;(g).办理退房功能,删除某个客房的住客记录;(h).统计文件中客房的个数、被预订但未入住的客房个数、入住的客房个数。10
作者:陈哲 2.6 流对象作为函数参数 file . seekg(−3L, ios :: cur ) ; file . get (ch); cout << ch; cout << file . tellg () ; file . close () ; return 0; } 2.6 流对象作为函数参数 K第 2 章作业k 1. 文本输出:编写一个程序,要求用户输入文件名,在屏幕上显示文件的内容。在显示时, 每行后面都要带上一个冒号和该行的单词数目。例如: This a test : 3 for you. : 2 Date is 2022 5 31. : 5 如果一屏显示不完文件的内容,那么显示 24 行后,暂停一下,等待用户按任意键以后 继续显示后面的 24 行。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。 2. 文本转存:编写一个文件转存程序。首先,将输入文件中的每一行的单词逆序排列后存 储到第二个文件中。然后,将输入文件中的每一行的单词按字典序排列后存储到第三个 文件中。采用编辑器(如记事本)创建一个文本文件,以测试这个程序。 3. 酒店客房管理:编写一个程序,将下面的酒店客房信息存储到二进制文件中: (a). id:客房号,具有 10 个元素的字符数组; (b). price:价格,整型变量。价格不能为负,也不能大于 10000; (c). booked:是否已经被预订(包括已入住,但可能尚未入住),布尔变量; (d). cname:住客姓名,具有 20 个元素的字符数组; (e). cid:住客身份证号码,具有 20 个元素的字符数组。 该程序具有一个菜单,便于用户完成如下操作: (a). 增加客房信息:向文件增加记录; (b). 删除客房信息:从文件删除记录; (c). 显示客房信息:显示文件中的所有记录; (d). 预订客房功能:修改某个客房的预订记录; (e). 办理入住功能:修改某个客房的住客记录; (f). 按照姓名查找某个住客的客房号; (g). 办理退房功能,删除某个客房的住客记录; (h). 统计文件中客房的个数、被预订但未入住的客房个数、入住的客房个数。 10
第3章类的基础部分内容提要口构造函数口类(成员变量、成员函数、私有公有)口对象(类的实例/变量)口析构函数口内联函数口对象数组和对象指针3.1类(成员变量、成员函数、私有公有)3.2对象(类的实例/变量)练习3.1读程序,写输出结果。练习程序的多文件组织。E.h的内容如下:#ifndef IS_E_H_INCLUDED#defineIS_E_H_INCLUDED#include<iostream>using namespace std;class Cint a;public :void set(int i);void print O;1;#endifE.cpp的内容如下:#include"E.h"void C:: set(int i) {a=i;1void C:: print O 1cout <<a << endl;example.cpp的内容如下:#include <iostream>usingnamespace std;
第 3 章 类的基础部分 内容提要 h 类(成员变量、成员函数、私有公有) h 对象(类的实例/变量) h 内联函数 h 构造函数 h 析构函数 h 对象数组和对象指针 3.1 类(成员变量、成员函数、私有公有) 3.2 对象(类的实例/变量) 练习 3.1 读程序,写输出结果。练习程序的多文件组织。E.h 的内容如下: # ifndef IS_E_H_INCLUDED #define IS_E_H_INCLUDED #include <iostream> using namespace std; class C { int a; public : void set ( int i ) ; void print () ; }; #endif E.cpp 的内容如下: #include "E.h" void C:: set ( int i ) { a = i ; } void C:: print () { cout << a << endl; } example.cpp 的内容如下: #include <iostream> using namespace std;