QQ41190152 2018-07-05 00:09 采纳率: 0%
浏览 996
已结题

vector<class user> vec中的数据如何写入文件中并读取出来。

#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条回答 默认 最新

  • weixin_42069499 2018-07-05 00:57
    关注

    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,再整行输出。

    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题