C++核心编程(二十七)文件操作

C++中对文本文件操作需要包含头文件
(1)文件类型分为两种:
1)文本文件:文件以文本的ASCII码形式存储在计算机中
2)二进制文件:文件以文本的二进制i形式存储在计算机中,用户一般不能直接读懂文件内容
(2)文件操作的三大类:
1)ofstream:写操作
2)ifstream:读操作
3)fstream:读写操作

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

#include<iostream>
#include<fstream>
using namespace std;
void write_fp()
{
    ofstream ofp;//注意这里是ofstream
    if(!(ofp.is_open()))
    {
        cout<<"打开失败"<<endl;
        return;
    }
    ofp<<"写fdfdg";
    ofp.close();
}
int main()
{
    write_fp();
}

读文件的操作步骤
1.包含头文件
#include
2.创建流对象
ifstream ifs //注意这里是ifstream
3.打开文件
ifs.open(“文件路径”,打开方式);
ifs.is_open();判断是否打开成功
4.读取数据
四种读取方式
5.关闭文件
isf.close();
下面是一个读取操作的实例:

#include<iostream>
#include<fstream>//添加头文件
using namespace std;
void read_fp();
void read_fp()
{
     ofstream ofp;
     ofp.open("test.txt",ios::out);
        
    ifstream ifp;//创建对象,注意是ifstream
    ifp.open("text.txt",ios::in);//打开文件,设置打开方式//注意windows和linux的差异目录\\和目录/

     if(!(ifp.is_open()))
    {
        cout<<"打开失败"<<endl;
        return;
    }
    
    //读取方式1
    /*char buf[1024]={0};
    while(ifp>>buf)//遇到空格就进入下次循环
    {
        ofp<<buf;
        ofp<<'\n';
        cout<<buf<<endl;  //这种读取方式有缺陷,它会一个字节一个字节地读取,不会保存原来的文本格式。且无法识别空格
    }*/
    
   
     // 读取方式第二种
  /*    char buf[1024]={0};
    while(ifp.getline(buf,sizeof(buf)))//这种方式读取字符按行读,这种方式可以配合'\n'可以获取原来文件的文本格式。//每行结束就进入下次循环
       {
          cout<<buf<<endl;//测试输入的内容
          ofp<<buf;//传入另外的文件
          ofp<<'\n';
        }     */
      //  string str;

    /*//读取方式第三种
      string str;
      while(getline(ifp,str))
      {
          cout<<str<<endl;//测试输入的内容
          ofp<<str;//传入另外的文件
          ofp<<'\n';
      }*/

      //第四种读取方式
      char  ch='\0';
      while(((ch=ifp.get())) != _GLIBCXX_STDIO_EOF)//最EOF其实是-1//这种方式是一个字节一个字节读取,会读取所有的字符,并且保存原有格式。
      {
             cout<<ch<<endl;//测试输入的内容
          ofp<<ch;//传如另外的文件
        //  ofp<<'\n';
      }


      ofp.close();
      ifp.close();
}
int main()
{
    read_fp();
  return 0;
}

二进制文件的读取写操作
例子:

#include<iostream>
#include<fstream>
using namespace std;
class person
{
public:
        
        char m_name[20];
        int m_age;
};
void binary_write()
{
    ofstream ops;
    ops.open("bianry.txt",ios::binary|ios::out);
    person p={"张三",10};
    ops.write((const char*)&p,sizeof(p));
      ops.close();
      
    ifstream ips;
    ips.open("bianry.txt",ios::in|ios::binary);
     if(!ips.is_open())
    {
        cout<<"打开失败"<<endl;return;
    }
    person p1;
    ips.read((char *)&p1,sizeof(person));
    cout<<p1.m_name<<endl;
    cout<<p1.m_age<<endl;
    
  
    ips.close();
    
}
int main()
{

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值