讀寫二進位檔案

來源:互聯網
上載者:User
#include <cstdlib>#include <iostream>#include <fstream>#include <string>#include <iomanip>using namespace std;/* *  */inline void eatline() {while(cin.get() != '\n') continue;}struct planet{    char name[20];    double population;    double g;};const char *file = "planets.dat";int main(int argc, char** argv) {    planet pl;    cout<<fixed<<right;    ifstream fin;    fin.open(file,ios_base::in | ios_base::binary);    if(fin.is_open())    {        cout<<"Here are the contents of "<<file<<" file: \n";        while(fin.read((char*)&pl,sizeof(pl)))        {            cout<<setw(20)<<pl.name<<": "                <<setprecision(0)<<setw(12)<<pl.population                <<setprecision(2)<<setw(6)<<pl.g<<endl;        }        fin.close();    }        ofstream fout(file,ios_base::out | ios_base::app | ios_base::binary);    if(!fout.is_open())    {        cerr<<"Can`t open "<<file<<" file for output; \n";        exit(EXIT_FAILURE);    }    cout<<"Enter planet name (enter a blank to quit): \n";    cin.get(pl.name,20);    while(pl.name[0] != '\0')    {        eatline();        cout<<"Enter planetary population: ";        cin>>pl.population;        cout<<"Enter planet`s acceleration of gravity: ";        cin>>pl.g;         eatline();        fout.write((char*)&pl,sizeof pl);        cout<<"Enter planet name (enter a blank to quit): \n";        cin.get(pl.name,20);    }    fout.close();        fin.clear();    fin.open(file,ios_base::in | ios_base::binary);    if(fin.is_open())    {        cout<<"Here are the new contents of the "<<file<<" file: \n";        while(fin.read((char*)&pl,sizeof pl))        {            cout<<setw(20)<<pl.name<<": "                <<setprecision(0)<<setw(12)<<pl.population                <<setprecision(2)<<setw(6)<<pl.g<<endl;        }        fin.close();    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.