定义一个类Person,它有2个private的数据成员:姓名name(string类型)、学号id(int类型)。在定义上述类的基础上,扩充程序,实现以下功能。 (1)重载运算符“>>”和“<<”实现输入、输出一个对象。 (2)定义函数createFile创建一个文本文件person.txt,将n个Person对象写入文件。 (3)定义函数readFile再将文本文件person.txt中的信息读出并显示在屏幕上。 (4)在主函数中定义类的对象数组,包含3个元素,从键盘读入3个元素然后在屏幕输出。接着调用createFile创建文件,最后调用readFile读取文件,再次输出从文件读取的内容,两次输出的结果应完全一样。
时间: 2024-03-06 09:52:18 浏览: 58
好的,让我来为您解答这个问题。
以下是一个可能的实现,您可以参考:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Person {
private:
string name;
int id;
public:
Person() {}
Person(string n, int i) :name(n), id(i) {}
friend istream& operator>>(istream& is, Person& p) {
is >> p.name >> p.id;
return is;
}
friend ostream& operator<<(ostream& os, const Person& p) {
os << p.name << " " << p.id;
return os;
}
void display() {
cout << name << " " << id << endl;
}
};
void createFile(Person arr[], int n) {
ofstream fout("person.txt");
for (int i = 0; i < n; i++) {
fout << arr[i] << endl;
}
fout.close();
}
void readFile() {
ifstream fin("person.txt");
Person p;
while (fin >> p) {
p.display();
}
fin.close();
}
int main() {
Person arr[3];
for (int i = 0; i < 3; i++) {
cin >> arr[i];
cout << arr[i] << endl;
}
createFile(arr, 3);
readFile();
return 0;
}
```
这个程序定义了一个`Person`类,并定义了两个友元函数`operator>>`和`operator<<`,用于输入和输出一个`Person`对象。它还定义了一个`createFile`函数,用于创建一个文本文件并将`Person`对象写入文件,以及一个`readFile`函数,用于从文本文件中读取`Person`对象并在屏幕上显示。在主函数中,定义了一个`Person`对象数组,从键盘读入3个元素并输出,然后调用`createFile`创建文件,最后调用`readFile`读取文件并输出。
希望这个实现能够帮助您解决问题!
阅读全文