C++学习摘要之九:C++流和文件流
c/c++吧
全部回复
仅看楼主
level 6
低吟_TeaR 楼主
2012年05月07日 10点05分 1
level 6
低吟_TeaR 楼主
在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输 入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既 可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某 个载体或设备传送到内存缓冲区变量中,即输入流。在进行I/O操作时,首先是打 开操作,使流和文件发生联系,建立联系后的文件才允许数据流入和流出,输入 或输出结束后,使用关闭操作使文件与流断开联系。标准输入输出流 (cout、cin)在使用过程中,只要在程序的开头嵌入相应的头文件 “iostream.h”即可。文件的打开和关闭是通过使用fstream 类的成员函数open和close来实现的,fstream类用来对文件流进行操作,fstream 类的头文件是fstream.h. 1.数据的输出cout cout是标准输出设备 即显示器(默认设备)连接的预定义输出流。C++语言的插入运算符 “<<”向输出流发送字符,cout是数据的目的地,插入运算符 “<<”把数据传送到cout. 输出流对象cout输出数据的 语句格式为: cout<<数据1<<数据 2<<……<<数据n;其中, “<<”是输出操作符,用于向cout输出流中插入数据。在cout中还可以使用流控制符控制数据的输出格式,但要注意使用这些流控制符 时,要在程序的开始部分嵌入头文件“iomanip.h”。常用的 流控制符及其功能如下表所示:表1  I/O流的常用控制符

2012年05月07日 10点05分 2
level 6
低吟_TeaR 楼主
2.数据的输入cin cin是与标准输入设备即键盘(默认设备)连接的预 定义输入流。它从输入流中取出数据,数据从输入提起运算符 “>>”处流进程序。输入流对象cin输入数据的语句格 式为: cin>>变量名1>>变量名 2>>……>>变量名n;其中, “>>”是输入操作符,用于从cin输入流中取得数据,并将取得 的数据传送给其后的变量,从而完成输入数据的功能。注意: “>>”操作符后除了变量名外不得有其他数字、字符串,否则 系统会报错。 3.文件流及其有关的类文件是存储在磁盘、磁带等 外部设备上的数据的**,每一个文件都必须有一个唯一的文件名称。在使用文 件前必须首先打开文件,使用完毕后必须关闭文件。对文件的操作是由文件流类 完成的。文件流类在流与文件之间建立连接。下图是与文件操作相关的类及其继 承关系。 图1
几个与文件处理相关的类及其继承关系结构图下表是常用 的I/O流类库的说明,以及在编程中需要包含到程序中的头文件。
表2 常 用I/O流类库说明

2012年05月07日 10点05分 3
level 6
低吟_TeaR 楼主
4.文件的打开与关闭对文件的操作是由文件流类完成的。文件流类在 流与文件间建立连接。由于文件流分为三种:文件输入流、文件输出流、文件输 入/输出流,所以相应的必须将文件流说明为ifstream、ofstream和fstream类的 对象,然后利用文件流的对象对文件进行操作。对文件的操作过程可按照 一下四步进行:即定义文件流类的对象、打开文件、堆文件进行读写操作、关闭 文件,下面分别进行介绍。(1)定义文件流对象利用文件流类可 以定义文件流类对象,方法是:文件流类 对象名;如: ifstream ifile; //定义一个文件输入流对象 ofstream ofile; //定义一个文件输出流对象 fstream iofile; //定义一个文件输出/输入 流对象(2)打开文件定义了文件流对象后,就可以利用其成员函 数open()打开需要操作的文件,该成员函数的函数原型为: void open (const unsigned char *filename,int mode,int access=filebuf:openprot );其中:filename是一个字符型指针,指定了要打开的文件名;mode指 定了文件的打开方式,其值如下表所示;access指定了文件的系统属性,其取值 为: 0         一般文件 1         只读文件 : 2         隐藏文件 3         系统文件表3 在ios类中定义的文件打开方式

2012年05月07日 10点05分 4
level 6
低吟_TeaR 楼主
说明: 1)在实际使用过程中,可以根据需要将以上打开文件的方式用 “|”组合起来。如: ios::in|ios::out                 表示以读/写方式打开文件 ios::in|ios:: binary              表示以二进制读方式打开文件 ios:: out|ios:: binary            表示以二进制写方式打开文件 ios::in|ios::out|ios::binary       表示以二进制读/写 方式打开文件 2)如果未指明以二进制方式打开文件,则默认是以文本方 式打开文件。 3)对于ifstream流,mode参数的默认值为ios::in,对于 ofstream流,mode的默认值为ios::out. (3)文件的关闭在文 件操作结束(即读、写完毕)时应及时调用成员函数close()来关闭文件。该函 数比较简单,没有参数和返回值。利用对象和相应的成员函数对文件进行 读写操作,我们将单独介绍。 5.文件的读写操作在打开文件后就 可以对文件进行读写操作了。从一个文件中读出数据,可以使用文件流类的get、 getline、read成员函数以及运算符“>>”;而向一个文件写入 数据,可以使用其put、write函数以及插入符“<<”,如下表 所示:表4 文件流类的文件操作成员函数 顺序文件操作:这种操作方式只能从文件的开始处依次顺序读写文件内容,而 不能任意读写文件内容。从一个文件中读出数据,可以使用get、getline 、read成员函数以及运算符“>>”;而向一个文件写入数据, 可以使用put、write成员函数以及插入符“<<”。

2012年05月07日 10点05分 5
1