C++文件操作(黑马61-64)

1.基本概念

文件可以将数据持久化
头文件 #include “fstream”
1.文本文件 ASCII 2.二进制文件
ofstream:写操作 ifstream:读操作 fstream:读写操作(out inpput是相对于程序来讲的

2.文本文件

2.1写文件

步骤:
1.包含头文件 #include
2.创建流对象 ofstream ofs;
3.打开文件 ofs.open("文件路径“,打开方式)
4.写数据 ofs<<"写入的数据”
5.关闭文件ofs.close();
打开方式如图在这里插入图片描述

demo:

//1.包含头文件 fstream
//2.创建流对象
ofstream ofs;
//3.打开方式
ofs.open("scores.txt",ios::out);
//4.写内容
ofs<<"Name:袁华清"<<endl;
//5.关闭文件
ofs.close();

2.2.读文件

步骤:
1.包含头文件 #include
2.创建流对象 ifstream ifs;
3.打开文件 ifs.open("文件路径“,打开方式)
4.读数据 四种方式读取
5.关闭文件ifs.close();

demo:

     //1.包含头文件
    //2.创建流对象
    ifstream ifs;
    //3.打开文件 判断是否成功
    ifs.open("scores.txt",ios::in);
    if(!ifs.is_open())
    {
        cout << "文件打开失败"<<endl;
        return;
    }
    //4.读数据
    //a
    
    char buf[1024] = {0}; //ifs和cin用法一样 自动忽视空格 换行符等 等待其它字符
    while (ifs >> buf)
    {
        cout << buf<<endl;
    }
    
   //b
   
   char buf[1024] = {0};
   while (ifs.getline(buf,sizeof(buf)))
   {
       cout<<buf<<endl;
   }
   
  //c
  
  string buf;
  while (getline(ifs,buf))
  {
      cout<<buf<<endl;
  }
  //d
 char c;
 while ((c = ifs.get())!= EOF)
 {
     cout << c;
 }

demo中提供了四种读取方式,各有特点,与cin的四种方式类似,具体可查看

http://blog.csdn.net/k346k346/article/details/48213811

3.二进制文件

接口与文本文件有所不同,但其它均类似:

ofs.write((const char*)&p,sizeof(Person));
ofs.read((const char*)&p,sizeof(Person));

demo:

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

class Person
{
public:
    char m_Name[64];//姓名
    int m_Age;//年龄
};
//写
void test01()
{
    //1.包含头文件
    //2.创建流对象
    ofstream ofs;
    //3.打开方式
    ofs.open("scores.txt",ios::out|ios::binary);
    //4.写文件
    Person p = {"袁华清", 18};
    ofs.write((const char*)&p,sizeof(Person));
    
    //5.关闭文件
    ofs.close();
}
//读
void test02()
{
    //2.创建流对象
    ifstream ifs;
    //3.打开 判断
    ifs.open("scores.txt", ios::in|ios::binary);
    if(!ifs.is_open())
    {
        cout << "文件打开失败"<<endl;
        return;
    }
    //4.读文件
    Person p;
    ifs.read((char *)&p, sizeof(Person));
    cout <<p.m_Name<<" "<<p.m_Age<<endl;
    
    //5.关闭
    ifs.close();

}
int main()
{
    test02();

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值