文件操作的基本形式
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;
}