#include <iostream>
#include <fstream>
using namespace std; /*
二进制方式进行读写文件,可以读写 各种各样数据类型的数据
*/ class Person {
public:
char name[];
int age;
}; // 1 写二进制文件
void binaryWrite() {
// 1 包含头文件
// 2 创建流对象 并指定路径和文件打开方式
ofstream ofs("person.txt", ios::out | ios::binary) ;
// 3 指定路径和打开方式: 利用了创建对象的构造函数
// 4 写文件
// 搞一个自己创建的对象进行写入
Person p = { "张三", };
ofs.write((const char*)&p, sizeof(Person));
ofs.close();
} // 2 二进制方式读文件
void binaryRead() {
// 1 包含头文件
// 2 创建流对象
ifstream ifs;
// 3 指定文件路径和打开方式
ifs.open("person.txt", ios::in | ios::binary);
if (!ifs.is_open()) {
cout << "文件打开失败" << endl;
return;
}
// 4 读取文件
Person p;
ifs.read((char *)&p, sizeof(Person));
cout << p.name << " " << p.age << endl;
// 5 关闭流
ifs.close();
} int main() { //binaryWrite();
binaryRead(); system("pause");
return ;
}

其实在写文件的时候,只是 按照开始位置 和指定文件大小 写入一段二进制

所以打开也这样做, 给对象p一个开始位置 复制过去相应的大小。

二进制方式就很强大,能够读取各种特殊类型的数据结构

c++ 二进制方式读取文件 读取特殊类型数据的更多相关文章

  1. C语言采用文本方式和二进制方式打开文件的区别分析

    稍微了解C程序设计的人都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还存在差别呢?对于编程人员来说,文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制 ...

  2. 读取Excel表格日期类型数据的时候

    用POI读取Excel数据:(版本号:POI3.7) 1.读取Excel 2.Excel数据处理: Excel存储日期.时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再进行判断转化 1 ...

  3. python numpy实现多次循环读取文件 等间隔过滤数据

    numpy的np.fromfile会出现如下的问题,只能一次性读取文件的内容,不能追加读取,连续两次的np.fromfile读到的东西一样 如果数据文件太大(几个G或以上)不能一次性全读进去,需要追加 ...

  4. 读取文件 读取项目里面的json

    ClassPathResource resource = new ClassPathResource("properties/post2LazadaTest.json"); Fil ...

  5. windows 下读取文件名称和类型

    def getFileWithType(self,xname): # xname='E:\\python\\recievedir\\data.pkl' # xname='E:\python\test. ...

  6. c# 解决读取Excel混合文本类型,数据读取失败的解决方法

    错误重现: ----------------------------------------------------------------------- 在导入Excel读取数据时,其中的一个字段保 ...

  7. hive外部表自动读取文件夹里的数据

    我们在创建表的时候可以指定external关键字创建外部表,外部表对应的文件存储在location指定的目录下,向该目录添加新文件的同时,该表也会读取到该文件(当然文件格式必须跟表定义的一致),删除外 ...

  8. C语言:用二进制方式向文件读写一组数据(fread、fwrite)

    #include<stdio.h> #define SIZE 10 struct student { char name[10]; int num; int age; char addr[ ...

  9. 读取和写入blob类型数据

    读写oracle  blob类型 http://zyw090111.iteye.com/blog/607869 http://blog.csdn.net/jeryjeryjery/article/de ...

随机推荐

  1. CString写的web server

    socket通信机制 文件加载机制 手抄代码 test\\2017

  2. 用 gradle 运行 spring boot 项目

    用 gradle 运行 spring boot 项目(网页中的第6章:https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/gradle-plug ...

  3. 配置/更改vue项目中的资源路径

    打开 build/webpack.base.conf.js  ,在module.exports .resolve.alias下自定义: alias: { 'vue$': 'vue/dist/vue.e ...

  4. NSSting NSData 与字符集合

    NSString 是为了人类阅读而存在的,必须进行编码,以使得bytes对人类有意义 String Objects An NSString object encodes a Unicode-compl ...

  5. Linux中的磁盘练习

    查看磁盘接口类型 ide dh[a-z] scsi sd[a-z] 添加磁盘 先添加一个磁盘 cd /dev/ ls sd* 可以看到先添加的磁盘 磁盘分区 .fdisk /dev/sdb n (添加 ...

  6. MongoDB 企业版4.2.2安装

    一.下载企业版MongoDB安装RPM包 https://www.mongodb.com/download-center/enterprise 二.安装MogoDB4.2.2企业版 1.安装依赖包 n ...

  7. 使用Map文件查找崩溃信息

    简介 编写整洁的应用程序是一回事.但是当用户告诉你你的软件已经崩溃时,你知道在添加其他功能之前最好先解决这个问题.如果你够幸运的话,用户会有一个崩溃地址.这将大大有助于解决这个问题.但是你怎么能用这个 ...

  8. 请找出"aaaabbcccdddd"字符串中出现最多的字母

    function getCount(str) { for(var code=32;code<128;code++){ var mych=String.fromCharCode(code); va ...

  9. javascript使用H5新版媒体接口navigator.mediaDevices.getUserMedia,做扫描二维码,并识别内容

    本文代码测试要求,最新的chrome浏览器(手机APP),并且要允许chrome拍照录像权限,必须要HTTPS协议,http不支持. 原理:调用摄像头,将摄像头返回的媒体流渲染到视频标签中,再通过ca ...

  10. 洛谷/SPOJ SP3267 题解

    若想要深入学习主席树,传送门. Description: 给定数列 \(\{a_n\}\) ,求闭区间 \([l,r]\) 的互异的个数. Method: 扫描序列建立可持续化线段树,若此元素是第一次 ...