65 lines
1.6 KiB
C++
65 lines
1.6 KiB
C++
#include <fstream>
|
||
#include <iostream>
|
||
//向量是一个能够存放任意类型的动态数组
|
||
#include <cstring>
|
||
#include <vector>
|
||
using namespace std;
|
||
class Person {
|
||
private:
|
||
char name[20];
|
||
char id[18];
|
||
int age;
|
||
char addr[20];
|
||
|
||
public:
|
||
Person() {}
|
||
Person(char *n, char *pid, int Age, char *Addr) {
|
||
strcpy(name, n);
|
||
strcpy(id, pid);
|
||
age = Age;
|
||
strcpy(addr, Addr);
|
||
}
|
||
void display() {
|
||
cout << name << "\t" << id << "\t" << age << "\t" << addr << endl;
|
||
}
|
||
};
|
||
int main(int argc, char const *argv[]) {
|
||
vector<Person> v;
|
||
vector<Person>::iterator
|
||
pos; //声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素
|
||
char ch;
|
||
ofstream out("d:/person.dat", ios::out | ios::app | ios::binary);
|
||
char Name[20], ID[18], Addr[20];
|
||
int Age;
|
||
cout << "------输入个人档案------" << endl << endl;
|
||
do {
|
||
cout << "姓名: ";
|
||
cin >> Name;
|
||
cout << "身份证号: ";
|
||
cin >> ID;
|
||
cout << "年龄: ";
|
||
cin >> Age;
|
||
cout << "地址: ";
|
||
cin >> Addr;
|
||
Person per(Name, ID, Age, Addr);
|
||
out.write((char *)&per, sizeof(per));
|
||
cout << "Enter another Person(y/n)?";
|
||
cin >> ch;
|
||
} while (ch == 'y');
|
||
out.close();
|
||
ifstream in("d:/person.dat", ios::in | ios::binary); // L9
|
||
Person s;
|
||
in.read((char *)&s, sizeof(s));
|
||
while (!in.eof()) {
|
||
v.push_back(s);
|
||
in.read((char *)&s, sizeof(s));
|
||
}
|
||
cout << "\n---------从文件中读出的数据--------" << endl << endl; // L15
|
||
pos = v.begin();
|
||
for (pos = v.begin(); pos != v.end(); pos++)
|
||
(*pos).display();
|
||
|
||
|
||
return 0;
|
||
}
|