C++map容器里的所有内容以二进制方式保存与读取到文件

#include

#include

#include

#include

using namespace std;

class STUDENT

{

public:

string name;

int age;

};

void main()

{

map obm, VM;

int num;

STUDENT stu;

num = 23;

https://www.360docs.net/doc/c918319011.html, = "张山";

stu.age = 55;

obm.insert(make_pair(num, stu));

num = 24;

https://www.360docs.net/doc/c918319011.html, = "王五";

stu.age = 55;

obm.insert(make_pair(num, stu));

num = 25;

https://www.360docs.net/doc/c918319011.html, = "什么";

stu.age = 55;

obm.insert(make_pair(num, stu));

num = 26;

https://www.360docs.net/doc/c918319011.html, = "哎呀";

stu.age = 55;

obm.insert(make_pair(num, stu));

//显示

cout << "学号\t姓名\t年龄" << endl;

map::iterator iter = obm.begin();

while (iter != obm.end())

{

cout << iter->first << "\t" << iter->https://www.360docs.net/doc/c918319011.html, << "\t" << iter->second.age << endl;

iter++;

}

//保存

ofstream out("22.txt",ios::binary);

if (!out.is_open())

{

cout << "File is open fail!" << endl;

}

iter = obm.begin();

while (iter != obm.end())

{

out.write((char*)&iter->first,sizeof(int));

out.write((char*)&iter->second,sizeof(stu));

iter++;

}

out.close();

//读取

ifstream in("22.txt",ios::binary);

if (!in.is_open())

{

cout << "File is open fail!" << endl;

}

while (!in.eof())

{

in.read((char*)&num,sizeof(int));

in.read((char*)&stu,sizeof(stu));

VM.insert(make_pair(num,stu));

}

in.close();

//显示

iter = VM.begin();

while (iter != VM.end())

{

cout << iter->first << " " << iter->https://www.360docs.net/doc/c918319011.html, << " " << iter->second.age << endl;

iter++;

}

system("pause");

}

相关文档
最新文档