【实验目的】
掌握运算符重载的基本方法。
掌握标准输入输出的使用及格式控制方法。
掌握磁盘文件(如二进制文件、文本文件)的输入输出的方法。
【实验内容】
1.编写程序,重载运算符“<<”和“>>”,使用户能直接输入和输出固定电话的号码。电话号码以如下形式输入和输出: (027)xxxxxxxx
重载输入输出流进行类对象的输入与输出,固定电话号码类包含区号以及手机号string数据类型
Code:
#include<iostream>
#include<string>
using namespace std;
class Tel {
private:
string _Area;
string _Tel;
public:
Tel() {
}
//返回is引用 保证只有一个输入流对象
friend istream& operator>>(istream &in, Tel &tel) {
cout << "请输入正确的电话号码:";
string Num;
in >> Num;
int rightBrack = Num.find(")");
tel._Area = Num.substr(1, rightBrack);
tel._Tel = Num.substr(rightBrack + 1, Num.length());
return in;
}
friend ostream& operator<<(ostream &out, Tel &tel) {
//输出带括号的电话号码
cout << "输出电话号码为:";
out << "(" + tel._Area + ")" + tel._Tel << endl;
return out;
}
};
void main() {
Tel tel;
cin >> tel;
cout << tel;
return;
}
2.编写一个程序,实现以下功能:
(1)输入一系列的学生成绩(包括学号、姓名、成绩等数据)存放在文件stud.dat中。
(2)从stud.dat文件中读出这些数据并显示出来。
(3)在stud.dat文件中按姓名进行查询,如输入“李”,则将所有姓李的学生的数据都显示出来。所编写的程序运行结果示例如下:
选择(1:输入数据 2:输出数据 3:按姓名查找数据 其他退出):1
输入数据
学生人数:5
第1个学生(学号 姓名 成绩):1001 张三 89
第2个学生(学号 姓名 成绩):1002 李四 78
第3个学生(学号 姓名 成绩):1003 王五 92
第4个学生(学号 姓名 成绩):1004 李沅芷 88
第5个学生(学号 姓名 成绩):1005 赵六 56
选择(1:输入数据 2:输出数据 3:按姓名查找数据 其他退出):2
输出数据
学号 姓名 成绩
1001 张三 89
1002 李四 78
1003 王五 92
1004 李沅芷 88
1005 赵六 56
选择(1:输入数据 2:输出数据 3:按姓名查找数据 其他退出):3
输入姓名:李
输出匹配的结果:
学号 姓名 成绩
1002 李四 78
1004 李沅芷 88
选择(1:输入数据 2:输出数据 3:按姓名查找数据 其他退出):3
输入姓名:李四
输出匹配的结果:
学号 姓名 成绩
1002 李四 78
选择(1:输入数据 2:输出数据 3:按姓名查找数据 其他退出):0
【提示】在重载运算符“<<”和“>>”时,不能将其定义为类的成员函数,只能定义为类的友元函数。
Code:
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
char name[13];
class Student {
private:
char Number[13];
char Name[13];
double Grade;
static int i;
public:
friend istream& operator>>(istream &in, Student *stuIn) {
//先写入变量 再写入文件
ofstream binFile;//写入文件
binFile