Day13-C++基础之文件操作

文件操作

复制代码
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
​
class Person{
public:
    char m_Name[64];
    int m_Age;
};
​
int main(){
    //文本文件操作
​
    //写文件
    //1.包含头文件 fstream
    //2.创建流对象
    ofstream ofs;
    //3.指定打开方式
    ofs.open("test.txt",ios::out);//不指定路径会创建在项目文件夹下
    //这里注意:读文件打开方式:ios::in
    //写文件打开方式:ios::out
    //追加方式写文件:ios:app
    //如果文件存在就先删除再创建:ios::trunc
    //二进制方式:ios::binary
    //4.写内容
    ofs<<"name"<<endl;
    ofs<<"Jason"<<endl;
    //5.关闭文件
    ofs.close();
​
    //读文件
    //1.头文件
    //2.创建流对象
    ifstream ifs;
    //3.打开文件,并判断是否打开成功
    ifs.open("test.txt",ios::in);
    if(!ifs.is_open()){
        cout<<"fail to open"<<endl;
        return 0;
    }
    //4.读数据
    char buf[1024]={0};
    while(ifs>>buf){
        cout<<buf<<endl;
    }
    //或者
    char buf1[1024]={0};
    while(ifs.getline(buf,sizeof(buf))){
        cout<<buf<<endl;
    }
    //或者
    string buf2;
    while(getline(ifs,buf2)){
        cout<<buf<<endl;
    }
    //或者
    char c;
    while((c=ifs.get())!=EOF){
        cout<<c;
    }
    //5.关闭文件
    ifs.close();
​
    //二进制文件
    //写文件
    ofstream ofs1;
    ofs1.open("person.txt",ios::out|ios::binary);
    Person p={"Jason",18};
    ofs1.write((const char*)&p,sizeof(Person));//这里将Person类型强转为char
    ofs1.close();
​
    //读文件
    ifstream ifs1;
    ifs1.open("person.txt",ios::in|ios::binary);
    if(!ifs1.is_open()){
        cout<<"文件打开失败"<<endl;
        return 0;
    }
    Person p1;
    ifs1.read((char*)&p,sizeof(Person));
    ifs1.close();
​
    return 0;
}
相关推荐
布朗克16815 分钟前
OpenTelemetry 在 Spring Boot 项目中的3种集成方式
java·开发语言·opentelemetry
jingfeng51432 分钟前
线程池及线程池单例模式
linux·开发语言·单例模式
指针刺客44 分钟前
嵌入式筑基之设计模式
开发语言·c++·设计模式
青铜发条1 小时前
【python】python进阶——with关键字
开发语言·python
重启的码农1 小时前
Windows虚拟显示器MttVDD源码分析 (8) 驱动日志系统
c++·windows·操作系统
༒࿈༙྇洞察༙༙྇྇࿈༒1 小时前
jwt原理及Java中实现
java·开发语言·状态模式·jwt
重启的码农1 小时前
Windows虚拟显示器MttVDD源码分析 (7) 命名管道IPC通信
c++·windows·操作系统
励志成为糕手2 小时前
Java线程池深度解析:从原理到实战的完整指南
java·开发语言·性能优化·线程池·拒绝策略
乌萨奇也要立志学C++2 小时前
【C++详解】用哈希表封装实现myunordered_map和 myunordered_set
c++·哈希算法·散列表
我不是程序猿儿2 小时前
【C#/Cpp】CLR项目搭建的内联和托管两选项
开发语言·microsoft·c#