zoukankan      html  css  js  c++  java
  • c++ 二进制方式读取文件 读取特殊类型数据

     1 #include <iostream>
     2 #include <fstream>
     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一个开始位置 复制过去相应的大小。

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

  • 相关阅读:
    centos7 修复引导
    Django 过滤器
    Django 面向对象orm
    Django models字段查询谓词表
    linux常用的监控命令
    常用SQL语句
    python实现FTP服务器
    用python做一个图片验证码
    rsync
    jsonp的理解
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/11071866.html
Copyright © 2011-2022 走看看