正在加载图片...
中定义的成员函数 在使用这些类时,必须在程序中嵌入文件 fstream. h 8.1.1文件的打开和关闭 通过打开一个文件,可以将一个流与一个文件相联结。一个文件在打开时,必须指定文 件打开方式。在ios类中定义的一组枚举常量名给出了可允许的文件打开方式,如表8 所示。 表8-1文件的打开方式 常量名 打开一个文件进行读操作 打开一个文件进行写操作 文件打开时将文件指针定位于文件末尾 添加,向文件输出的内容都添加到文件尾部 trunc 如果文件已经存在,将其长度截断为0,并清除原有内容 socrate如果文件不存在,则打开操作失败 homeplace如果文件存在,除非设置ios:ate或os:ap,否则打开失败 binary 指定文件以二进制方式打开,缺省时为文本方式 除ios:app方式之外,文件刚打开时,指示当前读写位置的文件指针定位于文件的开始 位置,而ios:app使文件当前的写指针定位于文件尾 在打开一个文件时,若指定方式ios:out,而未指定ios:ate或ios:app,则隐含方式为 可以将几种方式通过“或”操作结合起来,例如,打开一个供读和写的文件,其方式可 定义为ios: in/ios:out. 文本文件和二进制文件最根本的区别在于进行LO操作时对“n'’字符的解释方式。在 C++中,这个字符表示的ASCI码是0X0A的字符(换行)。当文件以文本方式打开时,流 类在向文件缓冲区中插入字符时,凡遇到代码为0X0A的字符,都将其扩展为两个字符,即 0X0D和0X0A。反之,当从流中提取一个字符时,当流类遇到字符0X0D时,流类都将它 和其后的字符0X0A合并为一个字符“hn’。当文件以二进制方式打开时,所有的字符都按 一个二进制字节处理,不再对0X0A字符作变换处理 可以有两种方法以一定方式打开一个文件,一种方式是在建立对象时使用构造函数将 个文件和这个流对象联结起来。在 ifstream类、 ofstream类和 istream类中各定义有一个构造 函数,它们是 ifstream am(char int=ios: in, int=filebuf: openport) ofstream: ofstream(char int=ios: out, int -filebuf: openport) fstream fstream( char int, int-filebuf openport 在这三个构造函数中,第一个参数表示要联结的文件名,第二个参数指定文件打开的方 式, ifstream类和 ofstream类的构造函数提供了缺省值。最后一个参数指定文件的保护方式, 这个值和具体的操作系统有关,我们一般只使用缺省指定的 filebuf: penpont值,它是在 filebuf类中定义的一个公有的静态数据成员。 例81:将一个文件的内容拷贝到另一个文件EX81.CPP。 这个程序在遇到文件结束标志时终止。当流对象 Input和 output的生命期结束时,它们中定义的成员函数。 在使用这些类时,必须在程序中嵌入文件 fstream.h。 8.1.1 文件的打开和关闭 通过打开一个文件,可以将一个流与一个文件相联结。一个文件在打开时,必须指定文 件打开方式。在 ios 类中定义的一组枚举常量名给出了可允许的文件打开方式,如表 8—1 所示。 表 8—1 文件的打开方式 常量名 含义 in 打开一个文件进行读操作 out 打开一个文件进行写操作 ate 文件打开时将文件指针定位于文件末尾 app 添加,向文件输出的内容都添加到文件尾部 trunc 如果文件已经存在,将其长度截断为 0,并清除原有内容 nocreate 如果文件不存在,则打开操作失败 noreplace 如果文件存在,除非设置 ios::ate 或 ios::app,否则打开失败 binary 指定文件以二进制方式打开,缺省时为文本方式 除 ios::app 方式之外,文件刚打开时,指示当前读写位置的文件指针定位于文件的开始 位置,而 ios::app 使文件当前的写指针定位于文件尾。 在打开一个文件时,若指定方式 ios::out,而未指定 ios::ate 或 ios::app,则隐含方式为 ios::trunc。 可以将几种方式通过“或”操作结合起来,例如,打开一个供读和写的文件,其方式可 定义为 ios::in|ios::out. 文本文件和二进制文件最根本的区别在于进行 I/O 操作时对‘\n’字符的解释方式。在 C++中,这个字符表示的 ASCII 码是 0X0A 的字符(换行)。当文件以文本方式打开时,流 类在向文件缓冲区中插入字符时,凡遇到代码为 0X0A 的字符,都将其扩展为两个字符,即 0X0D 和 0X0A。反之,当从流中提取一个字符时,当流类遇到字符 0X0D 时,流类都将它 和其后的字符 0X0A 合并为一个字符‘\n’。当文件以二进制方式打开时,所有的字符都按 一个二进制字节处理,不再对 0X0A 字符作变换处理。 可以有两种方法以一定方式打开一个文件,一种方式是在建立对象时使用构造函数将一 个文件和这个流对象联结起来。在 ifstream 类、ofstream 类和 fstream 类中各定义有一个构造 函数,它们是: ifstream::ifstream(char *,int=ios::in,int =filebuf::openport); ofstream::ofstream(char *,int=ios::out,int =filebuf::openport); fstream::fstream(char *,int,int =filebuf::openport); 在这三个构造函数中,第一个参数表示要联结的文件名,第二个参数指定文件打开的方 式,ifstream 类和 ofstream 类的构造函数提供了缺省值。最后一个参数指定文件的保护方式, 这个值和具体的操作系统有关,我们一般只使用缺省指定的 filebuf::openport 值,它是在 filebuf 类中定义的一个公有的静态数据成员。 例 8_1:将一个文件的内容拷贝到另一个文件 EX8_1.CPP。 这个程序在遇到文件结束标志时终止。当流对象 input 和 output 的生命期结束时,它们
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有