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;
}
相关推荐
方安乐3 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
小小小米粒5 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
智者知已应修善业5 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
czhc11400756635 小时前
C# 428 线程、异步
开发语言·c#
:1216 小时前
java基础
java·开发语言
SilentSamsara6 小时前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
小短腿的代码世界7 小时前
Qt文件系统与IO深度解析:从QFile到异步文件操作
开发语言·qt
智者知已应修善业7 小时前
【51单片机按键调节占空比3位数码管显示】2023-8-24
c++·经验分享·笔记·算法·51单片机
harder3218 小时前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
jinanwuhuaguo8 小时前
OpenClaw工程解剖——RAG、向量织构与“记忆宫殿”的索引拓扑学(第十三篇)
android·开发语言·人工智能·kotlin·拓扑学·openclaw