C++把文件看作字符序列,即字符流。文件可分为文本文件和二进制文件。 fstream.h头文件包括三个流类:输入文件流类ifstream、输出文件流类ofstream和输入/输出文件流类fstream。函数中包含的头文件,最好要把引号引用的头文件写在前面。 文件的打开与关闭 1.使用open( )函数打开文件 open( )函数是上述三个流类的成员函数,其原型定义在fstream.h中。打开文件应先定义一个流类的对象,然后使用open( )函数打开文件。 open( )函数原型为: void open(const unsigned char*,int mode, int access=filebuf::openprot); open()函数第一个参数用来传递文件名,第二个参数决定文件将如何被打开,这些参数是定义在抽象类中,常用的有: ios::app // 使输出追加到文件尾部 ios::ate // 查找文件尾 ios::in // 打开一个文件进行读操作 ios::out // 打开一个文件进行写操作 ios::nocreate // 打开一个已有文件,如该文件不存在,则打开失败 ios::noreplace // 若文件存在,导致打开失败 ios::ate // 文件打开时,文件指针位于文件尾 ios::trunc // 如果文件存在,则清除该文件的内容,文件长度压缩为0 ios::binary // 以二进制方式打开文件 第三个参数access的值决定文件的类别。分下列5种情况: 0 普通文件 1 只读文件 2 隐含文件 4 系统文件 8 备份文件 对于类ifstream,mode的缺省值为ios::in,access的缺省值为0;而对于类ofstream,mode的缺省值为ios::out,access的缺省值为0。 例如,用读方式打开一个文本文件file.txt方法如下: fstream A; // 创建对象 A.open("file.txt",ios::in); 以输出文本方式打开一个文件的方法如下: ofstream outfile; // 创建对象 outfile.open("file.txt",ios::out); // 打开输出文件 以输出二进制数据方式打开一个文件的方法如下: ofstream outfile; // 创建对象 outfile.open("file.txt",ios::out|ios::binary); 打开普通的输出文件file.txt的方法如下: ofstream out; out.open("file.txt",ios::out,0); 或, ofstream out.open("file.txt"); 实现将数据从数据文件提取到内存区的操作,要使用ifstream类的函数成员open( ),将输入文件流与一个特定的存储区域联系起来。 以提取文本数据的方式打开一个文件的方法如下: ifstream in1; // 创建对象 in1.open("file1.txt",ios::in); // 打开文件 以提取二进制数据的方式打开一个文件的方法如下: ifstream in2; // 创建对象 in2.open("file2.txt",ios::in| ios::binary); // 打开文件 2.使用close( )函数关闭文 函数成员close( )的作用是关闭一个磁盘文件与输入/输出文件流的联系。使用完一个文件后,应该把它关闭。close( )函数是流类中的成员函数,它不带参数,不返回值。 调用close( )函数的格式如下: 流对象名. close( );
例如:
out. close( ); // 关闭与流out相联接的文件 close( )函数一次只能关闭一个文件,文件使用完后应及时关闭。 文件的读写 文件的读写分文本文件与二进制文件两种情况,在含有文件操作的程序中,必须包含头文件fstream.h。 对于打开的文件,可以使用输入/输出流的成员函数进行读写操作,这些函数有get( )、put( )、read( )、和write( )函数等。对于文本文件,也可以使用运算符“<<”与“>>”进行读写操作。
read( )函数在istream类中定义,其函数原型如下:
istream&read(unsigned char *buf,int n);
其中第一个参数是一个指针,它指向要读入数据的起始地址;第二个参数是一个整数值,它是要读入的数据的字节(字符)数。
write( )函数在ostream类中定义,其函数原型如下: ostream& write (const unsigned char *buf,int n); 此函数可以从buf所指的缓冲区把n个字符(字节)写到输出流中。 此外,在文件结束处有一个标志位,记为EOF(End OF);采用文件流方式读取文件时,使用成员函数eof( ),可以检测到这个结束符,文件结束时其返回值为真。 为了实现C++文件的随机读写操作,输入/输出流类库提供了定位文件读写指针的成员函数。 istream类定位读指针的成员函数如下: istream& istream::seekg(流中位置) ; 表示移动指针到参数所指的绝对位置(相对于文件开始位置的字节数)。 istream& istream::seekg(偏移量,参照位置) ; 表示移动指针到偏移于第二个参数所指位置的一定位置上,偏移量由第一个参数值给出,第二个参数是ios类中的一个枚举量: enum seek_dir { beg; // 相对于文件的开始位置 cur, // 相对于文件指针的当前位置 end // 相对于文件尾 }; istream& istream::tellg( ) ;// 返回指针的绝对位置 ostream类对于写指针提供的成员函数如下: ostream&ostream::seekp(流中位置) ; 表示移动指针到参数所指的绝对位置。 ostream& ostream::seekp(偏移量,参照位置) ; 表示移动指针到偏移于第二个参数所指位置的一定位置上,偏移量由第一个参数值给出。 ostream& ostream::tellp( ) ; // 返回指针的绝对位置 用于读的文件指针必须处于文件头与文件尾之间,用于写的文件指针则可指向文件尾之后。 |
正在加载中...
显示评论签名
取消批量删除批量删除
上一页1下一页
到页