当前位置: 首页 > news >正文

C++中的文件操作

文件操作

  • 所有数据程序运行结束后都会释放
  • 通过文件可以将数据持久化
  • 头文件
  • 文件类型分为两种
    • 文本文件—文件以文本的ASCII码形式存储在计算机中
    • 二进制文件—文件以文本的二进制存储在计算机中
  • 操作文件的三大类
    • ofstream—写操作
    • ifstream—读操作
    • fstream—读写操作
  • 文本文件
    • 写文件
      • 包含头文件
        • #include
      • 创建流对象
        • ofstream ofs;
      • 打开文件
        • ofs.open(“文件路径”,打开方式);
      • 写数据
        • ofs << “写入数据”
      • 关闭文件
        • ofs.close();
      • 注意
        • 打开方式—需要时查找
        • 文件打开方式可以配合使用,利用|操作符
          • 用二进制方式写文件—ios::binary|ios::out
          #include<iostream>#include<fstream>using namespace std;void test(void){ofstream ofs;ofs.open("test.txt",ios::out);ofs<<"name"<<endl;ofs<<"test end"<<endl;ofs.close();}int main(){test();return 0;}
      
    • 读文件
    • 包含头文件
      • #include
    • 创建流对象
      • ifstream ifs;
    • 打开文件
      • ifs.open(“文件路径”,打开方式);
    • 读数据
      • 四种读取方式
    • 关闭文件
      • ifs.close();
        #include<iostream>#include<fstream>using namespace std;void test(void){ifstream ifs;ifs.open("test.txt",ios::in);if(!ifs.is_open()){cout << "打开失败" << endl;return ; }// //第一种读// char buf[1024] = {0};// while (ifs >> buf)// {//     cout << buf << endl;// }// // 第二种// char buf[1024] = {0};// while (ifs.getline(buf, sizeof(buf)))// {//     cout << buf << endl;// }// 第三种#include<string>string buf;while(getline(ifs,buf)){cout << buf << endl;}// // 第四种// char c;// while ((c=ifs.get())!=EOF)//EOF文件结尾// {//     cout << c;// }ifs.close();}int main(){test();return 0;}
    
  • 二进制文件
    • 打开方式要指定为ios::binary
    • 写文件
      • 二进制方式写文件主要利用流对象调用成员函数write
      • 函数原型:ostream& write(const char* buffer, int len);
      • 参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数
    • 读文件
      • 二进制方式读文件主要利用流对象调用成员函数read
      • 函数原型:istream& read(char *buffer, int len);
      • 参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数
      #include<iostream>#include<fstream>using namespace std;class Person{public:Person(char* name, int age){m_name = name;m_age = age;}  char *m_name;int m_age;};void testw(void){ofstream ofs;ofs.open("person.txt", ios::out|ios::binary);Person p("zhangsan", 10);ofs.write((const char *) &p, sizeof(Person));ofs.close();}void testr(void){ifstream ifs;ifs.open("person.txt", ios::in|ios::binary);if(!ifs.is_open()){cout<<"file open fail";}else{Person p("no", 0);ifs.read((char* )&p, sizeof(Person));cout << "name " << p.m_name << " age " << p.m_age << endl;}ifs.close();}int main(){testw();testr();return 0;}
    
http://www.lryc.cn/news/21830.html

相关文章:

  • 监控生产环境中的机器学习模型
  • 15s了解什么是物联网技术
  • 敲出来的真理-mysql备份大全,备份命令,还原命令,定时备份
  • ATTCK实战系列-红队评估(一)
  • 学python的第二天---差分
  • 数据结构入门5-2(数和二叉树)
  • 把Redis当作队列来用,到底合适吗?
  • Python学习-----项目设计1.0(设计思维和ATM环境搭建)
  • (九)python网络爬虫(理论+实战)——爬虫实战:指定关键词的百度新闻爬取
  • 数据分析面试、笔试题汇总+解析(六)
  • vue3+rust个人博客建站日记3-编写主页
  • 前端常考react面试题(持续更新中)
  • C++11多线程编程 二:多线程通信,同步,锁
  • js——原型和原型链
  • [计算机网络(第八版)]第三章 数据链路层(学习笔记)
  • void在不同场景下的意义
  • Flume简介
  • java简单学习
  • Vue2 组件基础使用、父子组件之间的传值
  • 代码随想录算法训练营 || 贪心算法 122 55 45
  • 数据结构基础之栈和队列
  • 【Spark分布式内存计算框架——Spark Streaming】3.入门案例(上)官方案例运行
  • 【博学谷学习记录】超强总结,用心分享 | 架构师 Tomcat源码学习总结
  • 泛型<E>
  • 你对MANIFEST.MF这个文件知道多少?
  • 史上最经典垃圾回收器(CMS,G1)详解、适用场景及特点、使用命令
  • Hive查询中的优化
  • 【开发规范】go项目开发中的[流程,git,代码,目录,微服务仓库管理,静态检查]
  • 数组初始化方式与decimal.InvalidOperation
  • 【Opencv-python】之入门安装