C++ 文件操作

文件操作基础知识

文件操作需要的头文件:

  • #include <fstream>

文件类型:

  • 文本类型
  • 二进制类型

文件操作创建的对象类型:

  • ofstream:写文件操作
  • ifstream:读文件操作
  • fstream:读写操作

打开方式:

  • ios::in:读
  • ios::out:写
  • ios::ate:光标初始位置:文本末尾
  • ios::app:追加方式写文件
  • ios::trunc:先删除原文件,再新建
  • ios::binary:二进制方式

多种打开方式可以通过 | 连接,配合使用。

可以利用 ofstreamifstreamis_open 函数判断文件是否打开。

文本类型文件写操作

  1. 包含头文件: #include <fstream>
  2. 创建流对象:ofstream ofs;
  3. 打开文件:ofs.open(filePath, 打开方式);
  4. 写入数据:ofs << 数据;
  5. 关闭文件:ofs.close();

文本类型文件读操作

  1. 包含头文件: #include <fstream>
  2. 创建流对象:ifstream ifs;
  3. 打开文件:ifs.open(filePath, 打开方式);
  4. 读取数据:四种数据读取方式
  5. 关闭文件:ifs.close();

数据读取方式一:

char buf[1024] = {0};  // 创建数据缓存区
while(ifs >> buf)
{
    // 按行读取数据
    cout << buf << endl;
}

数据读取方式二:

char buf[1024] = {0};  // 创建数据缓存区
while(ifs.getline(buf, sizeof(buf)))
{
    // 按行读取数据
    cout << buf << endl;
}

数据读取方式三:

#include <string>

string buf;  // 创建数据缓存区
while(getline(ifs, buf))
{
    // 按行读取数据
    cout << buf << endl;
}

数据读取方式四:不推荐,干脆不记了。

二进制类型文件写操作

可以直接用于保存对象

  1. 包含头文件: #include <fstream>
  2. 创建流对象:ofstream ofs;
  3. 打开文件:ofs.open(filePath, ios::out | ios::binary);
  4. 写入数据:ofs.write((const char*)&p, sizoeof(p));
  5. 关闭文件:ofs.close();

二进制类型文件读操作

  1. 包含头文件: #include <fstream>
  2. 创建流对象:ifstream ifs;
  3. 打开文件:ifs.open(filePath, ios::in | ios::binary);
  4. 读取数据:ifs.read((char*)&p, sizoeof(p));
  5. 关闭文件:ifs.close();