c++ 二进制方式读取文件 读取特殊类型数据
#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++ 二进制方式读取文件 读取特殊类型数据的更多相关文章
- C语言采用文本方式和二进制方式打开文件的区别分析
稍微了解C程序设计的人都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还存在差别呢?对于编程人员来说,文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制 ...
- 读取Excel表格日期类型数据的时候
用POI读取Excel数据:(版本号:POI3.7) 1.读取Excel 2.Excel数据处理: Excel存储日期.时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再进行判断转化 1 ...
- python numpy实现多次循环读取文件 等间隔过滤数据
numpy的np.fromfile会出现如下的问题,只能一次性读取文件的内容,不能追加读取,连续两次的np.fromfile读到的东西一样 如果数据文件太大(几个G或以上)不能一次性全读进去,需要追加 ...
- 读取文件 读取项目里面的json
ClassPathResource resource = new ClassPathResource("properties/post2LazadaTest.json"); Fil ...
- windows 下读取文件名称和类型
def getFileWithType(self,xname): # xname='E:\\python\\recievedir\\data.pkl' # xname='E:\python\test. ...
- c# 解决读取Excel混合文本类型,数据读取失败的解决方法
错误重现: ----------------------------------------------------------------------- 在导入Excel读取数据时,其中的一个字段保 ...
- hive外部表自动读取文件夹里的数据
我们在创建表的时候可以指定external关键字创建外部表,外部表对应的文件存储在location指定的目录下,向该目录添加新文件的同时,该表也会读取到该文件(当然文件格式必须跟表定义的一致),删除外 ...
- C语言:用二进制方式向文件读写一组数据(fread、fwrite)
#include<stdio.h> #define SIZE 10 struct student { char name[10]; int num; int age; char addr[ ...
- 读取和写入blob类型数据
读写oracle blob类型 http://zyw090111.iteye.com/blog/607869 http://blog.csdn.net/jeryjeryjery/article/de ...
随机推荐
- Python使用Thrift
2019年07月30日 14:59:29 Shower稻草人 阅读数 25更多 分类专栏: Python 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接 ...
- C++学习(7)—— 函数提高
1. 函数默认参数 在C++中,函数的形参列表中的形参是可以有默认值的 语法:返回值类型 函数名 (参数=默认值){} 注意 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值 ...
- MVC开发中自定义返回类型
在做项目web的MVC中,会用到返回值的问题,我们一般使用AjaxResult的返回值,根据自己的需要进行自定义,如下参考: using System; using System.Collection ...
- STL str replace
#include <iostream> #include <string> using namespace std; void main() { string s=" ...
- QT工程中添加资源(简单明了)
1. 在工程文件下右击添加新文件 2. 在QT目录下选择QT Resource File 3. 填写资源名称 4. 点击完成就可以看到自己建立的资源了 5. 点击右键添加现有文件,找到自己要添加的资源 ...
- E. Antenna Coverage (dp)
传送门 题意: 在一个一维坐标上,有 n 个东西, 每个东西, 用 xi, si 表示 这个东西在 xi 位置上, 它能覆盖到的区间为 [ xi - si, xi + si ]: 然后, 你可以对任意 ...
- 单点登录的实践demo
https://github.com/deadzq/web-sso-server 统一认证中心 https://github.com/deadzq/web-system-client1 用户客户端 结 ...
- 如何设置网站的robots.txt
做过网站优化的朋友都知道,搜索引擎蜘蛛爬行抓取网站时首先会去访问根目录下的robots.txt文件,如果robots文件存在,则会根据robots文件内设置的规则进行爬行抓取,如果文件不存在则会顺着首 ...
- ssh免密钥登陆的两种方式
ssh 免密钥登陆的两种方式第一种:直接使用命令复制过去ssh-copy-id root@192.168.3.113批量复制for i in {113..140}; do ssh-copy-id ro ...
- js传对象处理
JSON.stringify(carlist); 需要先将对象进行处理:如果服务端解析异常,可以先将这个值单独解析一次