信奥竞赛

系列

剑指信奥 | C++ 之文件操作

剑指信奥 | C++ 之文件操作

持久的数据

我们都知道,程序运行在计算机的内存中,一旦运行结束或机器关闭,所有的数据都会消失。

为了能够长时间的保持数据,我们需要把数据保存在内存外的其他地方,通常是放置于外存储设备上,一般以各种格式的文件来存放。

我们之前讲过 C 语言操作文件的方法:

剑指信奥 | C 语言之玩转文件

因为 C 是 C++ 的子集,这些方法在 C++ 语言中仍然适用。

但 C++ 也有自己处理文件的方式,今天,我们就来学习 C++ 语言操作文件的方法。

C++ 文件库

在 C++ 中,fstream 标准库包含着文件操作的方法,在其中包含着三种处理数据类型:

  1. ofstream 创建并写入文件,可用 fstream 替代
  2. ifstream 指定并读取文件,可用 fstream 替代
  3. fstreamofstreamifstream 的结合

如果我们需要创建文件,读写文件的多种操作,需要引入 iostreamfstream 即可。

下面,我们使用精简的代码演示 C++ 的文件操作。

创建并写文件

先看代码示例:

#include <iostream>
#include <fstream>

using namespace std;

int main() {

// 创建 data.out
ofstream data("data.out");

// 写入数据 1 2 3
data << "1 2 3";

// 关闭文件
data.close();

return 0;
}

/*
data.out:
1 2 3
*/

总结:

  1. 使用 ofstram 创建文件
  2. 使用 << 向文件写入数据
  3. 要关闭文件,释放内存空间

读文件

我们先来看读文件的示例:

#include <iostream>
#include <fstream>

using namespace std;

int main() {

// 读取文件 data.in
ifstream data("data.in");

// 循环读取每一行
string line;
while (getline(data, line)) {
cout << line << endl;
}

// 关闭文件
data.close();

return 0;
}

/*
data.in:
1 2 3
4 5 6

output:
1 2 3
4 5 6
*/

总结:

  1. 使用 ifstream 定义要读的文件
  2. 使用 while 循环读取每一行数据
  3. 最后,也要关闭文件,释放内存空间