c++ 二进制方式读取文件 读取特殊类型数据

1 #include
 2 #include
 3 using namespace std;
 4
 5 /*
 6 二进制方式进行读写文件,可以读写 各种各样数据类型的数据
 7 */
 8
 9 class Person {
10 public:
11     char name[50];
12     int age;
13 };
14
15 // 1 写二进制文件
16 void binaryWrite() {
17     // 1 包含头文件
18     // 2 创建流对象 并指定路径和文件打开方式
19     ofstream ofs("person.txt", ios::out | ios::binary) ;
20     // 3 指定路径和打开方式: 利用了创建对象的构造函数
21     // 4 写文件
22     //  搞一个自己创建的对象进行写入
23     Person p = { "张三", 18 };
24     ofs.write((const char*)&p, sizeof(Person));
25     ofs.close();
26 }
27
28 // 2 二进制方式读文件
29 void binaryRead() {
30     // 1 包含头文件
31     // 2 创建流对象
32     ifstream ifs;
33     // 3 指定文件路径和打开方式
34     ifs.open("person.txt", ios::in | ios::binary);
35     if (!ifs.is_open()) {
36         cout << "文件打开失败" << endl;
37         return;
38     }
39     // 4 读取文件
40     Person p;
41     ifs.read((char *)&p, sizeof(Person));
42     cout << p.name << " " << p.age << endl;
43     // 5 关闭流
44     ifs.close();
45 }
46
47 int main() {
48
49     //binaryWrite();
50     binaryRead();
51
52     system("pause");
53     return 0;
54 }

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

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

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

Original: https://www.cnblogs.com/Lin-Yi/p/11071866.html
Author: 稀里糊涂林老冷
Title: c++ 二进制方式读取文件 读取特殊类型数据

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535302/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • c++ win32 遍历进程列表

    使用 CreateToolhelp32Snapshot #include #include #include #include int main() { HANDLE hSnap …

    C++ 2023年5月29日
    064
  • [转]C++重载()(强制类型转换运算符)

    在 C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符。 类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数。经过适…

    C++ 2023年5月29日
    059
  • VSCode C++使用-1 快速创建C++、C项目

    1、安装C/C++ Project Generator2、Ctrl+Shift+P 选择Create C++ Project3、生成一个支持windows,linux多个平台的项目…

    C++ 2023年5月29日
    046
  • C++ STL std::copy 详解

    std::copy(start, end, std::back_inserter(container)); 这里,start和end是输入序列(假设有N个元素)的迭代器(itera…

    C++ 2023年5月29日
    060
  • c++智能指针

    跟comptr类似 明确定义AddRef和Release,然后定义与comptr类似的一个辅助类. 这里有2种方式 1.Release的时候引用计数为0的时候删除对象 2.定义一个…

    C++ 2023年5月29日
    094
  • UML——从类图到C++

    简易软件开发流程 实践中,use case and description、class diagram与sequence diagram三者搭配,几乎是UML项目的基本类型,所以在…

    C++ 2023年5月29日
    076
  • C++入门–友元、静态成员、单例设计模式、成员变量和函数的存储(三)

    posted @2021-12-15 17:06 sgggr 阅读(32 ) 评论() 编辑 Original: https://www.cnblogs.com/sggggr/p/…

    C++ 2023年5月29日
    058
  • (转载)C++lambda表达式

    C++ 语言中的lambda表达式在很多情况下提供了函数对象的另一种实现机制。Lambda表达式并不是STL所特有的,但它广泛应用于这一环境中。Lambda是表达式是定义一个没有名…

    C++ 2023年5月29日
    064
  • C/C++ 回调函数(Callback)& 函数指针

    摘要:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的…

    C++ 2023年5月29日
    053
  • 哈希表查找(散列表查找) c++实现HashMap

    算法思想: 哈希表 什么是哈希表 在前面讨论的各种结构(线性表、树等)中,记录在结构中的相对位置是随机的,和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和…

    C++ 2023年5月29日
    071
  • [C++]一份Linq to object的C++实现

    几个月的构想+0.5小时的设计+4小时的linq.h编码+3小时的测试编码。 大量使用C++11的特性,在GCC 4.7.2下编译通过。 关于实现相关的描述就不说了,我表达能力差,…

    C++ 2023年5月29日
    046
  • 80%学生的困惑,学完C/C++之后学什么?

    大家好,最近不少小伙伴问我,说是学院最近教完了C/C++之后就没有相关的语言课开设了,陷入了一个迷茫期,不知道后面应该学些什么,来向我请教。 一直以来问我这个问题的小伙伴还不少,我…

    C++ 2023年5月29日
    068
  • EclipseC++学习笔记-9 将文件从项目中排除与恢复

    选中文件,取消Debug,Release勾选如果需要恢复,勾选Debug,Release即可。这样可以方便进行多个带main源码测试。 本博客是个人工作中记录,遇到问题可以互相探讨…

    C++ 2023年5月29日
    056
  • [C++] new和delete运算符使用方法

    new 和 delete 是C++语言中的两个运算符,配套使用。 new:用于分配内存,与C语言中的 malloc 相同,分配在堆内存 delete:用于释放内存,与C语言中的 f…

    C++ 2023年5月29日
    052
  • [转] C++ STL中map.erase(it++)用法原理解析

    总结一下map::erase的正确用法。首先看一下在循环中使用vector::erase时我习惯的用法: 这一种用法是没有问题的。 如上所示,C++98中map::erase并没有…

    C++ 2023年5月29日
    065
  • C++强大背后

    在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with c…

    C++ 2023年5月29日
    055
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球