相关函数介绍

在我们的C语言中读写二进制文件一般使用的fread、fwrite全局函数,当然也可以使用更底层的read和write函数。在我们的C++中 通过ofstream 和 ifstream 对象 读写文件更加的方便了。对二进制文件的读写 主要使用 ofstream::write,ifstream::read函数。如果对文件读写方向感不强,记不住的 ,记住4个字就行了。读入写出。这个4个字是针对 程序或者说是内存!往内存里面读数据 -> read ,往磁盘里面写数据->write。这样永远就会忘了。还有一些其他的函数,都比较简单。感觉用起来很方便。

这里普及下序列化和反序列化

序列化: 将数据结构或对象转换成二进制串的过程。
反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。

下面就用相关函数实现普通的字符文件操作 和 二进制文件操作。代码注释很详细

普通文件操作

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
using namespace std;//写文件
void WriteFile()
{ofstream file("./text.txt",ios::out);if (!file.is_open()){cout << "文件打开失败" << endl;return;}file << "姓名:laymond" << endl;file << "年龄:18" << endl;file.close();return;
}
//读文件
void ReadFile()
{ifstream file("./text.txt", ios::in);if (!file.is_open()){cout << "文件打开失败" << endl;return;}char temp[1024] = { 0 };//读取文件3种方式//1、read  file.eof() 作为判断条件 会慢一拍while (file >> temp)//while (!file.eof()){//file.read(temp, 1024); //这样会读取到\n//cout << temp// >>按行读取,不会读换行符cout << temp << endl;}//2、get 一个一个字符的读取//char c;//while ( (c=file.get()) != EOF )//{// cout << c;//}//3、一行一样读取 getline 会把\n 舍弃掉....//while (file.getline(temp,1024))//{//    cout << temp << endl;//}file.close();
}

二进制文件操作(序列化和反序列化)

接上面代码哈,是写在同一个文件中的。

class Person
{
public:Person(char* name, int age){strcpy(this->name, name);this->age = age;}void showInfo(){cout << name << " " << age << endl;}
public:char name[10]{ 0 };int age = 0;
};
//二进制文件 进行写
void WriteBinaryFile()
{ofstream file("./binary.txt",ios::out | ios::binary );if (!file.is_open()){cout << "文件打开失败" << endl;}Person p1("Lay1", 11);Person p2("Lay2", 2);Person p3("Lay3", 151);Person p4("Lay4", 5);Person p5("Lay5", 9);file.write((char*)&p1, sizeof(p1));file.write((char*)&p2, sizeof(p2));file.write((char*)&p3, sizeof(p3));file.write((char*)&p4, sizeof(p4));file.write((char*)&p5, sizeof(p5));file.close();
}
//二进制文件 进行读
void ReadBinaryFile()
{ifstream file("./binary.txt", ios::in | ios::binary);if (!file.is_open()){cout << "文件打开失败" << endl;}//开辟一块空间 存放读取的数据char* temp = new char[sizeof(Person)];//或者 Person p;开辟的空间肯定合适//将数据读入的 temp对应的空间while (file.read(temp,sizeof(Person))){Person p = *(Person*)(temp);p.showInfo();}file.close();
}int main(int argc, char *argv[])
{//读写 字符文件//WriteFile();//ReadFile();//读写 二进制文件//WriteBinaryFile();ReadBinaryFile();return EXIT_SUCCESS;
}

运行结果验证

C++实现对象序列化和反序列化(读写二进制文件)操作相关推荐

  1. java培训教程分享:Java中怎样将数据对象序列化和反序列化?

    本期为大家介绍的java培训教程是关于"Java中怎样将数据对象序列化和反序列化?"的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java ...

  2. 代码即财富之我学Java对象序列化与反序列化(2)

    2019独角兽企业重金招聘Python工程师标准>>> 我们在程序创建的Java对象都是存在于JVM内存中的,也就是Java对象的生命周期一定不会长于JVM,所以如何以一种持久化的方 ...

  3. 从零开始学前端:对象序列化与反序列化、冒泡排序、数组去重 --- 今天你学习了吗?(JS:Day11)

    从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:字符串和数组的方法 - 今天你学习了吗?(JS:Day10) 文章目录 从零开始学前端:程序猿小白也可以完全 ...

  4. C#对象序列化与反序列化zz

    C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍.......................... ...

  5. C#对象序列化与反序列化

    C#对象序列化与反序列化 C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍............. ...

  6. Xson:Java对象序列化和反序列化工具

    1. Xson 介绍  Xson是一个Java对象序列化和反序列化程序.支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化.  地址:https://github.com/xso ...

  7. C#对象序列化和反序列化

    C#对象序列化和反序列化 序列化:就是将对象转换为二进制 反序列化:就是将二进制转换为对象 作用:传输数据. 序列化: 1).将这个类标记为可以被序列化的. 在要序列化的类上面标记[Serializa ...

  8. Java对象序列化与反序列化

    什么是序列化与反序列化 当两个进程在进行远程通信时,彼此可以发送各种类型的数据.无论是何种类型的数据,都会以二进制序列的形式在网络上传送.发送方需要把这个Java对象转换为字节序列,才能在网络上传送: ...

  9. FastJson实现复杂对象序列化与反序列化

    一.认识FastJson 1.优势 fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果说明比gson快大约6倍,fastjson采用独创的算法 ...

最新文章

  1. 注册表----修改Win7登录界面
  2. 深度学习(二十九)——Normalization进阶, CTC
  3. 只有3%的猿能完全看懂的高端漫画
  4. jQuery的操作css的几种方法和位置,尺寸以及scrolltop方法
  5. Meta:绝对没有威胁要离开欧洲市场
  6. Linux 搭建NFS文件服务器实现文件共享
  7. redhat linux手动RPM安装gcc,g++
  8. Jenkins 构建触发器操作详解
  9. glib wpa_supplicant Unix上库编译错误解决与总结
  10. android仿ios录音动画,仿IOS录音机
  11. 一文汇总卡方检验分析步骤
  12. FLV合并开源代码flvmerge分析
  13. 基于JAVA美发店预约系统设计与实现
  14. ​深圳国际会展中心希尔顿、茂名浪漫海岸喜来登度假、南昌青山湖希尔顿欢朋酒店开业 | 中国酒店周刊...
  15. 微信关键字自动回复功能实现
  16. Win10使用Lenovo Vantage更新驱动后蓝屏,提示system_service_exception ETD.sys如何解决
  17. mysql数据库 博客_mysql数据库教程--第 页-杨雨个人博客-关注互联网和搜索引擎的技术博客...
  18. PLC信号处理系列之RC低通滤波器(梯形图)
  19. 产品经理入门学习(1)-认识产品经理
  20. Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机GA遗传算法PSO粒子群优化算法)、案例应用之详细攻略

热门文章

  1. 最新js实现复制粘贴功能实例
  2. nginx location 斜杠_【一点资讯】斜杠青年双·11买什么本最划算?光影精灵6让你做“多面娇娃” www.yidianzixun.com...
  3. 前后端分离重复提交_阿里一面:如何保证API接口数据安全?
  4. python如何用色度表示数值大小_python中色度通道的YUV子采样
  5. python线程安全的计数器_+ =运算符在Python中是线程安全的吗?
  6. ajax结合接口 分页插件
  7. Qt杂记-QQuick之Android隐藏状态栏以及状态栏透明(QQuick项目)
  8. Spring Boot中实现简单表单提交(登录功能)
  9. WEB安全基础-XSS基础
  10. Fail2ban详细教程,解决网站被扫描、CC攻击、ssh暴力破解、防爬虫等问题