文档详情

流和文件IO操作.ppt

发布:2017-07-02约2.8千字共21页下载文档
文本预览下载声明
第五讲 文件I/O C++ 中,要进行文件I/O,首先必须创建一个流,然后将这个流与文件相关联(称为打开文件),这时才能进行读和写操作,使用完后,需关闭文件。 6.1 文件的打开和关闭 C++有三种类型的文件流:输入文件流、输出文件流和输入/输出文件流。 要打开一个输入文件流,必须定义类型为ifstream的对象; 要打开一个输出文件流,必须定义一个类型为ofstream的对象; 要建立输入和输出的流,必须定义一个类型为 fstream的对象。 例如,下一程序段建立一个输入流、一个输出流和一个输入/ 输出流: ifstream in; //input ofstream out; //output fstream both; //input and output 一旦建立了一个流,将它与文件相关联的一种方法是使用函数 open()。 ofstream ofile; // 创建输出文件流 ofile.open(payroll) ; ofile.close( ); ofile.open(employee); // 重用 ofile 上述程序段也可写为 ofstream ofile(payroll); ofile.close(); ofstream ofile(payroll); ofstream 类自动打开文件的构造函数,该构造函数的参数和缺省值与open()函数相同。 open(…)函数的函数原型为 void open(const char * ,int filemode,int = filebuf::openprot) 第一个参数表示相关联的文件名,第二个参数表示文件的打开方式,第三个参数是文件的保护方式,与操作系统有关,用户一般只使用缺省值。 文件的打开方式 方式 动作 ios::app 追加数据 (总是写到文件尾) ios::ate 在原打开文件上找到文件尾 ios::in 打开输入(对 ifstream 适用) ios::out 打开输出(对 ofstream 适用) ios::binary 以二进制方式打开文件, (缺省时为文本方式) ios::trunc 若文件存在则清除原内容(若指定 ios::out,但未指定 ios::ate 或 ios::app,则这种方式为隐含的) ios::nocreate 若文件不存在,则打开失败 ios::noreplace 若文件存在,除非设置 ate 或 app,否则打开输出失败 filemode 表示文件的打开方式,可以将几种方式通过“或”操作结合起来,例如,打开一个供读和写的文件,其方式可以定义为 ios::in | ios::out。 filemode 是一个缺省参数,打开输入文件时,它缺省为 ios::in;当打开输出文件时,缺省为 ios::out。 缺省情况下,文件用文本方式打开。这就是说,在输入时,回车/换行序列要转换为字符 \n。在输出时,字符 \n 转换为回车/换行序列。这些转换在二进制方式下是不进行的。这是正文方式和二进制方式主要的区别。 6.2 文件的读写 文件读操作是从流中取一个元素,文件写操作是向流中写一个元素。ofstream类从ostream中继承了输出操作,而 ifstream 类从 istream 中继承了输入操作。当一个输入文件流、输出文件流或输入/输出文件流建立后,对文件的读写就像控制台读写一样的方便。 将文件file_from拷贝到文件 file_to。 #include fstream.h int main() { char ch; ifstream f1(E:\\file_from); if (!f1) { cout cannot open \file_from\ ; return 1; } ofstream f2(E:\\file_to); if (!f2) { cout cannot open \ file_to \ ; return 1; } while (f1.get(ch)) f2.put(ch); f1.close(); f2.close(); } 将一个整数、一个浮点数和一个串写到 test 文件中。 #includ
显示全部
相似文档