首页 > 其他分享 >二进制文件读写实操,可用

二进制文件读写实操,可用

时间:2023-10-04 22:55:43浏览次数:34  
标签:二进制 读写 ios LEN read int 实操 file

实测: 参照《C++文件操作详解》fstream 不能用,以下采用 iftream和oftream类实现。

读写文件

二进制文件的读写

读写数据块
要读写二进制数据块,使用成员函数read()和write()成员函数,它们原型如下:

read(unsigned char *buf,int num);
write(const unsigned char *buf,int num);

read() 从文件中读取 num 个字符到 buf 指向的缓存中,如果在还未读入 num 个字符时就到了文件尾,可以用成员函数 int gcount();来取得实际读取的字符数;而 write() 从buf 指向的缓存写 num 个字符到文件中,值得注意的是缓存的类型是 unsigned char *,有时可能需要类型转换。

实例

必须包含

#include<fstream>
using namespace std;
#include <iostream>
#include<fstream>
using namespace std;
#define LEN 10
int main()
{
    ofstream    file_out;
    ifstream    file_in;
    /// <文件写入>
    file_out.open("Demo1.dat", ios::binary | ios::app | ios::in);//二进制、追加方式、文件输入方式
    if (!file_out.is_open())
    {
        cout << "文件打开异常!";
        return 0;
    }
    short   arr1[LEN];
    for (int i = 0; i < LEN; i++)
    {
        arr1[i] = i * 2;
        cout << arr1[i] << endl;
    }
    for ( int i = 0; i < LEN; i++)
    {
        file_out.write(reinterpret_cast<char*>(arr1), sizeof(short) * LEN);
        
    }
    file_out.close();
    /// </文件写入>

    /// <文件读取> 
    short read[LEN];
    file_in.open("Demo1.DAT", ios::binary | ios::out);//二进制、文件读取方式
    file_in.seekg(0, ios::beg);
    for (int i = 0; i < LEN; i++)
    {
        file_in.read(reinterpret_cast<char*>(read), sizeof(short) * LEN);
        file_in.seekg(sizeof(short) * LEN, ios::cur);       
    }

    for (int i = 0; i < LEN; i++)
    {
        cout << read[i] << endl;
    }
    file_out.close();

    /// </文件读取>
}

实验结果

 

 

标签:二进制,读写,ios,LEN,read,int,实操,file
From: https://www.cnblogs.com/qitianmingjing/p/17742884.html

相关文章

  • react17源码中部分二进制计算的解释
    theme:qklhk-chocolatehighlight:a11y-darkreact17放弃了之前的expirationTime而启用了lane模型,故而在原来16的基础上又产生了更多的二进制运算,在接下来的一段时间我打算把这些二进制运算都整明白了、关于react为什么会启用lane模型的官方解释js中的二进制位运算都是以32......
  • ElasticSearch系列-索引原理与数据读写流程
    索引原理倒排索引倒排索引(InvertedIndex)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。ES底层在检索时底层使用的就是倒排索引。索引模型现有索引和映射如下:{"products":{"mappings":{"proper......
  • stata 18 显示r603 不能安装外部命令 主要是设置文件夹的读写权限
    1.stata18安装位置的ado文件夹中新建plus personal ......
  • 笨办法学Python3 习题16 读写文件
    知识点:a_txt=open(file_a)         #默认只读模式打开文件file_a,赋值变量a_txt,后面好执行读取命令b_txt=open(file_b,"w")      #以write写入模式打开文件file_b,赋值变量b_txt//还有"r"只取模式,"a"追加模式a_txt_r=a_txt.rea......
  • C语言的二进制
    32位最大值为什么是2^31-1计算机里面是用补码表示数字,因为要区分正负,用最高位来区分,0位正,1为负。剩下2^31,除去0就是(2^31)-1另外1开头是负数,范围就是-2^31到+(2^31)-1 int_max二进制如下,首位的0为符号位01111111111111111111111111111111如果int_max+1,则......
  • Symchk.exe是微软提供的一个命令行工具,用于下载符号文件以帮助调试问题。符号文件包含
    Symchk.exe是微软提供的一个命令行工具,用于下载符号文件以帮助调试问题。符号文件包含用于将二进制文件映射回源代码的关键信息,可帮助开发人员在调试期间确定问题的根本原因。使用Symchk.exe,您可以指定要下载符号文件的二进制文件,该工具会查找相关的PDB文件并将其下载到本地计算......
  • `centos 7.9`二进制方式安装`MySQL-5.7.43`
    二进制方式安装说明以下操作都是基于Linux操作系统cenos7.9,并且所有的操作都是基于root用户关闭防火墙停止防火墙 systemctlstopfirewalld禁用防火墙开机自启 systemctldisablefirewalld下载安装包下载地址如下 https://dev.mysql.com/downloads/mys......
  • 二进制有关操作模板
    lowbit:lowbit(x)是$x$的二进制表达式中最低位的1所对应的值template<typenameT>Tlowbit(Tx){returnx&-x;}求二进制中1的个数:【方法一】库函数:__builtin_popcountll(n)附库函数的具体实现:unsignedpopcount(unsignedu){ u=(u&0x55555555)+......
  • ​​pandas.get_dummies()​​ 是一个用于执行独热编码(One-Hot Encoding)的 pandas 函
    pandas.get_dummies()是一个用于执行独热编码(One-HotEncoding)的pandas函数。它用于将分类(或离散)特征转换为模型可以处理的二进制格式,以便更好地在机器学习算法中使用。独热编码将每个不同的类别值转换为一个新的二进制特征列,其中每个列代表一个类别,并且只有一个值为1,其余为0......
  • 【日常收支账本】【Day03】通过ElementTree+XPath实现对XML文件的读写
    一、项目地址https://github.com/LinFeng-BingYi/DailyAccountBook二、新增1.解析xml文件1.1功能详述解析所设计的xml文件格式,并将所得数据存入变量。点击查看xml格式<DailyAccountBook><balance><fund><value>5000.00</value>......