1 . 概述
我们已经学了C++的iostream这个标准库,因为项目经常要用到对文件的一些操作,所以我们需要引入一个新的库: fstream。
2 . 新的数据类型
ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ifstream 该数据类型表示输入文件流,用于从文件读取信息。
fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。
我觉得都用fstream好了,反正全能嘿嘿。
3 . 打开文件
(1)使用的是open这个方法
void open(const char *filename, ios::openmode mode);
第一个参数是文件的绝对路径(放在同一目录下相对路径也行)
第二个参数是文件被打开的mode
ios::app 追加模式。所有写入都追加到文件末尾。
ios::ate 文件打开后定位到文件末尾。
ios::in 打开文件用于读取。不会自动创建文件
ios::out 打开文件用于写入。如果没有文件的话,会自动创建文件
ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。
ios::binary 二进制方式
可以组合使用,用“|”隔开,如:
ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );
(2)不使用open()
很多程序中,可能会碰到 ofstream out(“Hello.txt”), ifstream in("…"),fstream foi("…")这样的的使用,并没有显式的去调用open()函数就进行文件的操作,直接调用了其默认的打开方式,因为在stream类的构造函数中调用了open()函数,并拥有同样的构造函数,所以在这里可以直接使用流对象进行文件的操作,默认方式如下:
ofstream out("...", ios::out);
ifstream in("...", ios::in);
fstream foi("...", ios::in|ios::out);
4 . 代码实操
#include<iostream>
#include<fstream>
#define NUM 100
int main()
{
int data[NUM] = { 0 };
std::fstream examplefile;
examplefile.open("D:/VS项目/C++file/example.txt",std::ios::out);
if (!examplefile.is_open())
{
std::cout << "Cannot find the file" << std::endl;
return -1;
}
for (int i = 0; i < NUM; i++)
{
data[i] = i;
examplefile << data[i] << " " ;
}
examplefile.close();
return 0;
}
运行完之后项目目录下就多了一个txt文件,里面存放的是刚才写入的一些数据