二进制文件在c ++中不起作用

时间:2014-10-28 15:56:28

标签: c++ fstream ifstream file-handling ofstream

我正在尝试创建一个二进制文件来存储Student类的对象。但write()函数似乎不起作用。当我调用函数将数据写入文件时,它接受数据。但是,当我查询显示文件的内容时数据没有显示。任何人都可以指出我在这里做错了什么。以下是我的代码:

#include <iostream>
#include <fstream>
using namespace std;
class Student
{
    int marks;
    public:
    void get()
    {
        cin>>marks;
    }
    void show()
    {
        cout<<marks<<endl;
    }        
};

void writ()
{
    ofstream f1;
    f1.open("record.dat",ios::app|ios::binary);
    Student ob;
    ob.get();
    f1.write((char*)&ob,sizeof(ob));
    f1.close();
}

void rea()
{
    ifstream f2;
    f2.open("record.dat",ios::in|ios::binary);
    Student ob;
    while(f2.read((char*)&ob,sizeof(ob)))
    {
        ob.show();
    }
    cout<<"EOF\n";
    f2.close();
}

int main()
{
    int ch;
    do
    {
        cout<<"1-enter data"<<endl;
        cout<<"2-show data"<<endl;
        cout<<"3-Exit"<<endl;
        cin>>ch;
        cout<<"\n\n";
        if(ch==1)
            writ();
        else if(ch==2)
            rea();
        else
            break;
    }while(1);
    return 0;
}

0 个答案:

没有答案