首页 理论教育 文件操作示例及小节总结

文件操作示例及小节总结

时间:2023-10-25 理论教育 版权反馈
【摘要】:例1-11的功能是将源文件中的内容读取出来,之后将这些内容再写入目标文件。例1-113.文件流状态检查C++文件流类从ios_base类那里继承了一个流状态成员。这个流状态成员指出诸如一切顺利、已达文件尾、I/O操作失败等流状态信息。提示在例1-12的代码中,头文件cstdio其实是原C语言中的头文件stdio.h。例1-12总结读者若能在C语言中熟练进行文件操作,再学本小节是比较轻松的。

文件操作示例及小节总结

C/C++中的文件是非常重要的概念。所谓“文件”,一般是指存储在外部介质上数据的集合,并且是一组相关数据的有序集合。当被使用时,文件被调入内存中。

文件可分为两种:一种是上述所说的,就是驻留在磁盘或其他外部介质上的一个有序数据集,可以是数据文件、可执行程序等;另一种是设备文件,是指和主机相连的各种设备,如显示器、键盘、打印机等。外部设备一般可看作一个文件来进行管理。它们的输入、输出等同于对磁盘文件的读和写。

在C语言中,文件的类型可分为两种:缓冲型和非缓冲型。文件系统的读写也因此分为两种方法:缓冲文件系统一般用来处理文本文件;非缓冲文件系统可用来处理二进制文件。C语言函数库中包含了大量的文件处理函数。当需要使用这批函数时,需要在源程序中包含头文件“stdio.h”。

在C++语言中,关于文件的处理功能更加高级——新封装了部分模板和部分类。常用的类如下:

•ifstream和wifstream用来读取文件;其中wifstream是字读取操作。

•ofstream和wofstream用来将数据写入文件;其中wofstream是字读取操作。

•fstream和wfstream用于读写文件;其中wfstream是字读取操作。

•filebuf和wfilebuf用于进行实际的字符读写;其中wfilebuf是字读写操作类。

值得注意的是,使用上述几个类时,需要包含头文件<fstream>。下面介绍在C++STL(模板库)中如何使用文件操作。

1.文件标识

在C语言中打开文件时,一般需要使用标识符来表明文件的使用方式。同样,在C++语言中打开文件时,同样需要使用文件标识符(文件模式常量)来说明文件的使用方式。常用的文件模式常量如下:

2.文件的读写

小节主要讲述如何使用ifstream类和ofstream类。这两个类均包含了一批各自的成员函数。这些成员函数主要用于打开和关闭文件、设置文件缓冲区、读取和写入文件、文件指针定位等。下面举例说明文件读写操作。例1-11的功能是将源文件中的内容读取出来,之后将这些内容再写入目标文件。(www.xing528.com)

例1-11

3.文件流状态检查

C++文件流类从ios_base类那里继承了一个流状态成员。这个流状态成员指出诸如一切顺利、已达文件尾、I/O操作失败等流状态信息。例如,fail();is_open();eof()。

4.使用临时文件

在软件开发过程中,程序员经常需要使用临时文件。临时文件的存在是短暂的,且必须受程序控制。在C++中,创建临时文件、复制另一个文件的内容并删除文件其实都很简单。首先,需要为临时文件制订一个命名方案,确保每个文件都被指定独一无二的文件名。cst-dio库函数中声明的tmpnam()标准函数可以满足这一要求。函数原型如下:

char∗tmpnam(char∗ pszname)

tmpnam()函数创建一个临时文件名(值得注意:仅仅产生一个文件名),将它放在pszname指向的C-风格字符串中。常量L_tmpnam和TMP_MAX限制了文件名包含的字符数以及在确保当前目录中不生成重复文件名的情况下,tmpnam()可被调用的最多次数。临时文件的使用方法见例1-12。

提示

在例1-12的代码中,头文件cstdio其实是原C语言中的头文件stdio.h。在本例中,变量TMP_MAX的值为32767,表明临时文件名字符长度的变量L_tmpnam的值为14。文件名是随机产生的,所有临时文件输出到屏幕上。

例1-12

总结

读者若能在C语言中熟练进行文件操作,再学本小节是比较轻松的。唯一的不同之处在于:在C++中使用了模板库和常用的IO类。读者可以执行附例中的可执行程序,或者重新编译源文件之后执行,体验一下产生临时文件名的过程。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈