C++的文件操作

文件操作的基本形式

1、定义文件流对象

2、通过构造函数或者成员函数open打开文件(若文件不存在则创建)

3、打开文件失败时的中断或文件处理

4、对文件进行各种操作

5、文件处理结束时关闭文件

文件是存在于磁盘上的,流对象则位于内存空间,若定义输入流对象ifstream inf;则与inf关联的文件默认是以读的方式打开的,即将数据从磁盘文件读入内存空间,读数据使用read成员函数。若定义输出流对象ofstream iof;则与iof关联的文件默认是以写的方式打开的,即将数据从内存空间写入磁盘文件,写数据使用write成员函数。

/*例子:已知文件book.dat中有100个数据销售记录,每个销售记录由代码、书名、单价、和数量4个组成部分组成,文件每行包括上述四个组成成分,并且使用Tab间隔,格式如下:
1001    软件世界    5    100
1002    计算机工程    6    120
要求将所有记录写入到out.dat文件中,然后将第一行数据输出到屏幕。*/


#include <fstream>
#include <iostream>
using namespace std;

struct Book    
{
    char c[5],n[11];
    int p,q;
};//定义一个Book类型的数据结构,包含四个组成成分

int main(void)
{
    Book a;
    ifstream inf("book.dat");//文件输入流是读模式,即将文件中内容读入内存中;
    ios_base::openmode m = ios_base::in|ios_base::out;
    ofstream iof("out.dat",m|ios_base::trunc|ios_base::binary);//打开(新建一个二进制文件)
    if(inf.fail()||iof.fail()) return -1;
    while(!inf.eof())
    {
        inf>>a.c>>a.n>>a.p>>a.q;
        iof.write((char *)&a,sizeof(Book));
    }
    inf.close();
    iof.close();//将两个文件都关闭
    //iof.seekp(0*sizeof(Book),ios_base::beg);
    ifstream iinf("out.dat");//重新将out.dat文件打开为ifstream类对象,以便将第一行数据写入a
    iinf.read((char *)&a,sizeof(Book));
    cout<<a.c<<endl<<a.n<<endl<<a.p<<endl<<a.q<<endl;
    iinf.close();
return 0;
}

猜你喜欢

转载自blog.csdn.net/rong_bao_bao/article/details/84326430