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

发布于:2024-04-20 ⋅ 阅读:(19) ⋅ 点赞:(0)

文件操作

#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;
}