C++ 文件操作

博客围绕C++展开,但具体内容缺失。C++是后端开发常用语言,在众多领域有广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
/*
    文件操作
    通过文件可以将数据持久化
    c++ <fstream>

    文件类型分为两种
    1.文本文件 文件以文本的ASCII码存贮在计算机中
    2.二进制文件的二进制形式存储在计算机中,用户一般不能读懂他们

    操作文件的三大类
    1.ofstream 写操作
    2.ifstream 读操作
    3.fstream 读写操作

    写文件五个步骤
    1.包含头文件
    #include<fstream>
    2.创建流对象
    ofstream ofs;
    3.打开文件夹
    ofs.open(文件路径, 打开方式) 相对路径1.    ./表示当前目录下   2.  ../表示当前目录的上一级目录     绝对路径 "E:\\a\\b\\c.txt"
    打开方式
    ios::in             为读文件而打开文件
    ios::out            为写文件而打开文件
    ios::ate            初始位置:文件尾
    ios::app            追加方式写文件
    ios::trunc          如果文件存在先删除,再创建
    ios::binary         二进制文件
    文件打开方式可以配合使用 利用|操作
    用二进制方式写文件 ios::binary | ios::out

    4.写数据
    ofs<<"写入数据"
    5.关闭文件
    ofs.close()

    读文件的五个步骤
    1.#include<fstream>
    2.创建对象流 ifstream ifs;
    3.打开文件并且判断文件是否打开成功
      ifs.open(文件路径, 打开方式)
    4.读数据->四种读取方式
    5.关闭文件 ifs.close()
*/
class Person
{
public:
    char name[50];
    int age;
};

void writing()
{
    // 写文件的五个步骤
    ofstream ofs;

    ofs.open("D:\\user\\desk\\1.txt", ios::out);

    ofs << "2023/01/10";

    ofs.close();
}

void opening()
{
    ifstream ifs;

    ifs.open("D:\\user\\desk\\1.txt", ios::in); // bool类型

    if (!ifs.is_open())
    {
        cout << "failing to open" << endl;
        return;
    }

    // 读文件
    // 方式1.
    // char buf[1024] = {0};
    // while (ifs >> buf) // 按照行读取
    // {
    //     cout << buf << endl;
    // }

    // 方式2.
    // char buf[1024] = {0};
    // while (ifs.getline(buf, sizeof(buf)))
    // {
    //     cout << buf << endl;
    // }

    // 方式3
    // string buf;
    // while (getline(ifs, buf))
    // {
    //     cout << buf << endl;
    // }

    // 方式4 将文件按照字符输出
    char c;
    while ((c = ifs.get()) != EOF) // EOF是文件结尾
    {
        cout << c;
    }

    ifs.close();
}

// 二进制文件的读写 写文件利用流对象调用成员函数write 函数原型是 ostream& wirte(const char * buffer, int len)
void binOpen()
{
    // 创建二进制 流对象
    ofstream ofs("D:\\user\\desk\\1.txt", ios::out | ios::binary);
    // 写文件
    Person p = {"lll", 15};
    ofs.write((const char *)&p, sizeof(Person));
    ofs.close();
}

// 二进制文件的读文件 利用流对象调用成员函数read
void binRead()
{
    // 创建流对象
    ifstream ifs;
    // 打开文件 判断文件是否成功打开 ios::in 为读文件而打开
    ifs.open("D:\\user\\desk\\1.txt", ios::in | ios::binary);

    if (!ifs.is_open())
    {
        cout << "FILE IS TILE" << endl;
        return;
    }

    Person p;
    ifs.read((char *)&p, sizeof(p));

    cout << p.age << "\t" << p.name << endl;

    ifs.close();
}

int main()
{
    // writing();
    // opening();
    // binOpen();
    binRead();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值