求助:vector做成员变量读入和写出文件出错
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class Name
{
private:
int a;
int b;
vector<int> vc;
public:
Name();
Name(ifstream* f);
int random(int num);
void save(ofstream* f);
int getA();
};
#include "Name.h"
using namespace std;
const int NUM = 10;
Name::Name()
{
a = random(NUM);
b = a+10;
vc.push_back(a+100);
vc.push_back(b+100);
}
//读出文件把一个对象的成员变量用来初始化,构造函数
Name::Name(ifstream* f)
{
ar = new int[2];
f->read((char*)&a, sizeof(int));
f->read((char*)&b, sizeof(int));
for(int i =0; i<2; i++)
f->read((char*)&vc.at(i), sizeof(int));
}
//把所有成员变量保存到f里
void Name::save(ofstream* f)
{
f->write((char*)&a, sizeof(int));
f->write((char*)&b, sizeof(int));
for(int i =0; i<2; i++)
f->write((char*)&vc.at(i), sizeof(int));
}
//产生随机数
int Name::random(int num)
{
int arand = rand()%(num);
return arand;
}
int Name::getA()
{
return a;
}
#include "Name.h"
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{
srand((unsigned)time(NULL));
int number = 10;
Name** inst = new Name*[number];
Name** insts = new Name*[number];
ofstream* ofile = new ofstream("output.txt");
for(int j = 0; j<number; j++)
inst[j] = new Name();
if(ofile->good())
{
for(int j = 0; j<number; j++)
{
inst[j]->save(ofile);
cout<<" * "<<inst[j]->getA();
}
}
ofile->close();
cout<<endl;
ifstream* ifile = new ifstream("output.txt");
if(ifile->good())
{
for(int j = 0; j<number; j++)
{
insts[j] = new Name(ifile);
cout<<" "<<insts[j]->getA();
}
}
return 0;
}
我的原意是将一组NAME的对象存到一个文件里,以后通过访问文件再读出这些对象到数组里
可是,我发现写入和读出来的值不同,不知道是不是因为成员变量含有vector导致的错误?
请高手解析,非常感谢!!