6.1.2 使用标准C++(www.cppentry.com)库std::fstream
标准C++(www.cppentry.com)操作文件主要是通过文件流fstream来完成的。文件输入/输出流用以实现文件读取和存储的操作,这种基于流的文件操作如图6-2所示。
|
| (点击查看大图)图6-2 文件输入/输出流 |
和文件有关系的输入/输出类主要在头文件<fstream>中被定义。在这个头文件中主要定义了3个类。由这3个类控制对文件的各种输入/输出操作,它们分别是ifstream、ofstream、fstream。其中fstream类是由iostream类派生而来的,它们之间的继承关系如图6-3所示。
如果需要使用fstream,则需要包含<fstream>头文件,与iostream不同的是,fstream需要和指定的文件名相关联,如:
- ofstream out("test.out");
- out << "hello, world!";
|
| (点击查看大图)图6-3 fstream与iostream |
除流操作符之外,fstream提供的文件操作函数如表6-3所示。
|
表6-3 fstream文件操作函数< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
|
函数 |
含义 |
|
open |
打开文件 |
|
close |
关闭文件 |
|
is_open |
判断当前文件是否已打开 |
其中,open()函数具有多个原型:
- void open(
- const char *_Filename,
- ios_base::openmode _Mode = ios_base::in | ios_base::out,
- int _Prot = (int)ios_base::_Openprot
- );
- void open(
- const char *_Filename,
- ios_base::openmode _Mode
- );
- void open(
- const wchar_t *_Filename,
- ios_base::openmode _Mode = ios_base::in | ios_base::out,
- int _Prot = (int)ios_base::_Openprot
- );
- void open(
- const wchar_t *_Filename,
- ios_base::openmode _Mode
- );
参数ios_base::openmode用以指定文件的打开方式,可以是如表6-4所示的标志的组合。
|
表6-4 ios_base::openmode标志 |
|
标志 |
含义 |
|
ios::app |
追加模式(append),新输出的内容追加在原文件内容的后面 |
|
ios::ate |
文件打开后定位到文件尾,ios:app就包含此属性 |
|
ios::binary |
以二进制方式打开文件,默认的方式是文本方式 |
|
ios::in |
文件以输入方式打开 |
|
ios::out |
文件以输出方式打开 |
|
ios::trunc |
截断模式(truncate),如果文件存在,则把文件长度设为0 |
|
ios::nocreate |
如果文件不存在则不创建 |
|
ios::noreplace |
如果文件已存在则不替换 |
如下罗列出使用fstream类进行文件操作的流程。
调用fstream::fopen()创建、打开文件。
通过流操作,使用fstream完成输入/输出,如:out << "hello, world!"。
调用fstream::close()关闭文件。
【责任编辑:
云霞 TEL:(010)68476606】