之前我们已经提到过fstream头文件中定义了3种文件I/O的类。在使用这些类操作文件的时候,我们在输入输出前后还需要打开和关闭文件这两种操作。下面我们先来看一个简单的示例:
动手写10.3.1
动手写10.3.1展示了文件流的基本应用。图10.3.1和图10.3.2分别是输入文件和运行程序之后的输出文件结果:
图10.3.1 输入文件
图10.3.2 输出文件
我们可以看到,文件流的使用非常简单,基本上就是将文件名和文件流对象关联起来,然后打开文件,再像标准输入输出那样操作文件,最后关闭文件。在打开文件的时候我们需要通过判断文件流对象转换成的布尔值是否为true来确认文件是否顺利读取。在不加路径的时候,单单使用文件名读取的是当前目录下的文件,因此我们在运行的时候要注意提前在源文件目录下创建好输入输出文件。
在使用完文件后要关闭文件,那么如果在没有关闭上一个文件的情况下就使用同一个文件流打开下一个文件,会发生什么情况呢?(www.xing528.com)
动手写10.3.2
动手写10.3.2展示了未关闭前一个文件就打开下一个文件的情况,编译运行后会因为打不开file2.txt而报错。流类型的这种处理也是可以理解的,因为如果未关闭的文件在其他地方被同时打开使用,可能会造成冲突,所以我们需要有这样的一个检测文件是否被使用的机制。
那么是不是只要用close关闭了文件以后就能顺利操作下一个文件了呢?答案是:不。文件流对象在操作文件的时候会产生状态的变化,而close并不能重置文件流的状态,要做到这点我们还需要使用clear()函数。
动手写10.3.3
动手写10.3.3展示了清除文件流状态,file1中的字符串是“I have to fix this bug”,而file2中的字符串是“before the end of the day”。运行结果如图10.3.3所示:
图10.3.3 清除文件流状态
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。