C++文件从操作:

1.文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放。通过文件可以将数据持久化。

C++ 中对文件操作需要包含头文件 <fstream> 文件类型分为两种:

  1. 文本文件 - 文件以文本的 ASCII 码形式存储在计算机中

  2. 二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们

操作文件的三大类:

  1. ofstream:写操作

  2. ifstream:读操作

  3. fstream:读写操作

1.2 文本文件 5.1.1 写文件 写文件步骤如下:

  1. 包含头文件#include <fstream>

  2. 创建流对象ofstream ofs;

  3. 打开文件ofs.open("文件路径", 打开方式);

  4. 写数据ofs << "写入的数据";

  5. 关闭文件ofs.close();

打开方式 解释
ios::in 为读文件而打开文件
ios::out 为写文件而打开文件
ios::ate 初始位置:文件尾
ios::app 追加方式写文件
ios::trunc 如果文件存在先删除,再创建
ios::binary 二进制方式
cpp 复制代码
#include <iostream>
#include <fstream>
using namespace std;

// 写文件
void writeFile() {
    ofstream ofs("test.txt",ios::out); // 创建并打开文件
    ofs << "Hello, File Operation!" << endl;
    ofs << "C++文件操作测试" << endl;
    ofs.close(); // 关闭文件
}

// 读文件
void readFile() {
    ifstream ifs("test.txt",ios::in);
    if (!ifs.is_open()) { // 判断文件是否成功打开
        cout << "文件打开失败" << endl;
        return;
    }

    string buf;
    while (getline(ifs, buf)) { // 按行读取
        cout << buf << endl;
    }
    ifs.close();
}

int main() {
    writeFile();
    readFile();
    return 0;
}

2.1二进制文件 以二进制的方式对文件进行读写操作。

打开方式要指定为 ios::binary。

2.2写文件 二进制方式写文件主要利用流对象调用成员函数 write。

函数原型:ostream& write(const char * buffer, int len);

参数解释:字符指针 buffer 指向内存中一段存储空间,len 是读写的字节数。

cpp 复制代码
#include <iostream>
#include <fstream>
using namespace std;

class Person {
public:
    char m_Name[64]; // 姓名
    int m_Age;      // 年龄
};

int main() {
    // 1. 包含头文件
    // 2. 创建流对象
    ofstream ofs;
    // 3. 打开文件,指定为二进制写模式
    ofs.open("person.bin", ios::out | ios::binary);

    Person p = {"张三", 18};
    // 4. 写数据(将Person对象以二进制形式写入)
    ofs.write((const char*)&p, sizeof(Person));

    // 5. 关闭文件
    ofs.close();

    cout << "二进制文件写入完成" << endl;
    return 0;
}
相关推荐
Ulyanov37 分钟前
Python实现6-DOF刚体仿真器(下)——环境扰动与控制闭环
开发语言·python·算法·系统仿真·雷达电子对抗·导引头
分布式存储与RustFS40 分钟前
RustFS Beta.10 性能解读:PUT 全面反超 MinIO,Rust 重写对象存储成了?
开发语言·后端·rust
小小的木头人1 小时前
Python 批量解析 Excel 经纬度,调用高德地图 API 获取中文地址
开发语言·python·excel
小保CPP1 小时前
OCR C++ Tesseract生成可搜索的pdf
c++·人工智能·ocr·模式识别·光学字符识别
nzz_1712142 小时前
PHP程序员转型AI岗位指南:核心技能、北京就业市场与转型路径分析
开发语言·人工智能·php
Risehuxyc2 小时前
C# 将doc转换为docx
开发语言·c#·xhtml
是个西兰花3 小时前
Linux:深入解析Linux线程原理与实现
linux·运维·c++·线程·互斥锁
多加点辣也没关系3 小时前
JavaScript|第24章:事件循环与并发模型
开发语言·javascript·ecmascript
ん贤3 小时前
怎么设计,才算一个优秀审计模块
大数据·开发语言·设计·审计
l1t4 小时前
测试用rust重写的postgresql: pgrust
开发语言·postgresql·rust