4.1 I/O流

/*从键盘输入10个学生信息(学生信息包括学号、姓名、性别、成绩)存放在磁盘文件f1.dat中,
然后把f1.dat中的数据复制到f2.dat文件中并在屏幕显示出学生数据;*/
#include<iostream>
#include<fstream>
using namespace std;
class student
{
    private: string  id;
             string name ;
             string sex;
             string chengji;
    public :
        student(){};
        void setid(){
            cin>>id;
        }
        string  getid()
        {
            cout<<"id为      "<<id<< endl;
            return id;

        }
       void setname(){
            cin>>name;;
        }
        string  getname()
        {
            cout<<"name为    "<<name<<endl;
            return  name;
        }
        void setsex(){
     cin>>sex;
        }
        string  getsex()
        {
            cout<<"sex为     "<<sex<< endl;
            return sex;
        }
        void setchengji(){
      cin>>chengji;
        }
        string  getchengji()
        {
            cout<<"chengji为 "<<chengji<<endl;
            return chengji;
        }
};

int main()
{

    student s[2];
   int i;
   cout<<"        **请输入两个同学的信息**"<<endl;
   for(i=0;i<2;i++){
        cout<<"输入id ";
     s[i].setid();
     s[i].getid();
        cout<<"输入名字 ";
     s[i].setname();
     s[i].getname();
     cout<<"输入性别 ";
     s[i].setsex();
     s[i].getsex();
     cout<<"输入成绩";
     s[i].setchengji();
     s[i].getchengji();
 }
 fstream f1("D:\\C++\\123\\io.dat",ios::out|ios::in|ios::binary);
 fstream f2("D:\\C++\\123\\io.dat",ios::out|ios::in|ios::binary);
 if(f1){
    for(i=0;i<2;i++)
    {
        f1.write((char*)&s[i],sizeof(s[i]));
    }
    f1.seekg(ios_base::beg);
    }
    else {
        cout<<"文件1写入失败"<<endl;
    }
  if(f2){
    for(i=0;i<2;i++){
        f1.read((char*)&s[i],sizeof(s[i]));
        cout<<"id   "<<s[i].getid()<<"name  "<<s[i].getname()<<"sex  "<<"\t"<<s[i].getsex()<<"chengji  "<<s[i].getchengji()<<endl;
        f2.write((char*)&s[i],sizeof(s[i]));
    }
  }
  else{
    cout<<"文件2写入失败"<<endl;
  }
  f1.close();
  f2.close();
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值