文件输入输出
### 简单文件I/O
如果想让程序写入文件,可以这样来做:
1. 创建一个 ofstream 对象来管理输出流;
2. 将该对象与特定的文件关联起来;
3. 使用cout的方式使用该对象,将输出写入文件;
4.
首先包含头文件#include<fstream>
,然后声明一个ofstream的对象:
ofstream fout
接下来,必须将这个对象与特定的文件关联起来,可以使用open,假设要打开文件jar.txt:
ofstream.open("jar.txt");
也可以使用构造函数将这俩构步合成一条语句:
ofstream fout("jar.txt");
然后以使用cout的方式使用fout,比如要把”boy next door”放到文件中:
fout << "boy next door" ;
由于ostream是ofstream类的基类,因此可以使用所有的ostream方法.另外以这种方式打开文件来进行输入时,如果没有要打开的文件,则将新创建一个.如果有了,则打开并清空文件,并输入;
读取文件和写入文件差不多:
1. 创建一个ifstream对象来管理输入流;
2. 将该对象与特定的文件关联起来;
3. 已使用cin的方式使用该对象;
同样,首先包含头文件#include<fstream>
,然后声明一个ifstream对象,将它与文件名关联起来:
可以像使用cin那样使用fin;
当输入和输出流对象过期时,流到文件的链接将会关闭,但不会删除流; 可以使用close()显式关闭:
下面是书上的一个栗子,输入文件名将某些信息写入文件,并读出;:
### is_open()
使用isopen检查文件是否被打开;
### 文件模式
文件模式描述的是文件将如何被使用: 读 写 追加等:
ios_base类定义了一个openmode类型;可以选择ios_base类中定义的多个常量来制定模式:
○ ios_base::in 打开文件,以便读取
○ ios_base::out 打开文件,以便写入
○ ios_base::ate 打开文件并移动到文件尾
○ ios_base::app 追加到文件尾
○ ios_base::true 如果文件存在,则清空
○ ios_base::binary 二进制文件
○ ios_base::app 保留文件内容,并在文件尾追加新信息
○ 文件模式 | ios_base::ate 以指定模式打开并移动到文件尾;
ifstream open()使用ios_base::in作为模式参数的默认值; ofstream open()方法使用ios_base::out|ios_base::trunc作为默认值; 可以使用 | 运算符来合并格式;