#include
#include
#include
#include
#include
using namespace std;
using std::ostream_iterator;
using std::istream_iterator;
class user{
public:
user(){};
~user(){};
string name;
string id;
string sex;
};
istream & operator >>(istream & in, const user & x)
{
in.read((char *)(user *)&x, sizeof(user));
return in;
}
ostream & operator<<(ostream & out, const user & x)
{
out.write((char *)(user *)&x, sizeof(user));
return out;
}
int main()
{
vector u;
user u1;
ofstream ofs;
ofs.open("JAR.txt",ios_base::binary);
for(int i=0;i {
cin>>u1.name>>u1.id>>u1.sex;
u.push_back(u1);
}
copy(u.begin(),u.end(),ostream_iterator(ofs));
ifstream ifs("JAR.txt", ios_base::binary);
istream_iterator iecg(ifs),iend;
vector v(iecg,iend);
vector x;
copy(v.begin(),v.end(),x.begin());
cout<<u.size()<<v.size()<<x.size()<<endl;
for(int i=0;i<x.size();i++)
{
cout<<x.at(i).name<<x.at(i).id<<x.at(i).sex<<endl;;
}
}
类似这样。
1,若vector中的元素类型不是stl中的类,即为vector vec, T 是自定义类型,那么可以在T类结构中重载运算符<<。
例如:
#include"iostream"
#include
#include"fstream"
#include"ostream"
using namespace std;
class person
{
public:
person(char ,char);
friend ostream & operator<<(ostream &os,person &p)//友元函数定义在person类中,可以操作person中的成员。
{
os << .Id << p.Name;
return os;
}
private:
char Id[10];
char Name[10];
};
inline person::person(char *name, char *id)
{
strcpy(Id, id);
strcpy(Name, name);
}
int main()
{
fstream file;
person *temp;
int i;
file.open("result.txt",ios_base::out);
vectorstu;
for (i = 0; i < 3; i++)
{
char name[10], id[10];
cin >> name >> id;
temp = new person(name, id);
stu.push_back(*temp);
}
for (i = 0; i <stu.size(); i++)
{
fp << stu[i];
}
fp.close();
system("pause");
return 0;
}
2,若vector中元素为基本数据类型,比如int,则先把vector中的元素转换成一个string,再整行输出。