C++读写二进制文件

本文不考虑读写结构化的二进制文件,也就是将一些对象序列化成二进制文件的操作,只是考虑纯粹字节的二进制操作。

读入文件用ifstream,写出文件用ofstream,这两种类型,只需要导入<fstream>头文件即可。还有这两种类型都在std命名空间。

读入二进制文件

读二进制文件用std::ios::binary模式打开。

读二进制数据,需要先分配一个空间,然后用下面方法,将read_count数目的字节读入buffer空间中。

read((char *)buffer, read_count)

为了提高效率,避免频繁读入,在内存足够的情况下最好一次把所有数据都读入到内存中。
为了决定需要分配多少空间,需要确定文件大小。
下面的方法采用先把读写位置移动到文件尾部,然后读取此时的文件位置,这就是文件大小。然后又将读写位置移动到文件头部,真正开始读入。

	ifstream infile(origin_json_file, std::ios::binary);  
		
	infile.seekg(0, std::ios::end);   //移动到尾部
	
	int file_size = (int)(infile.tellg());
	
	unsigned char* buff = new unsigned char[file_size];
	
	infile.seekg(0, std::ios::beg);  // 移动到头部
	infile.read((char*)buff, file_size);
	infile.close();

写入二进制文件

写二进制也是用std::ios::binary模式打开,
跟读类似,写的方法

write((const char *)buffer, write_count)

将缓冲区buffer的内容写到文件中,写write_count数目的字节。

	ofstream outfile(json_file, std::ios::binary);
	outfile.write((const char*)buff, file_size);
	outfile.close();

相关推荐

  1. C++二进制文件

    2024-04-25 12:36:05       33 阅读
  2. C++二进制文件

    2024-04-25 12:36:05       30 阅读
  3. c++的文件

    2024-04-25 12:36:05       58 阅读
  4. C++的文件

    2024-04-25 12:36:05       69 阅读
  5. C++BMP文件

    2024-04-25 12:36:05       36 阅读
  6. C语言】文件

    2024-04-25 12:36:05       52 阅读
  7. C# —— File文件

    2024-04-25 12:36:05       28 阅读
  8. C#】C#Excel文件

    2024-04-25 12:36:05       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 12:36:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 12:36:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 12:36:05       82 阅读
  4. Python语言-面向对象

    2024-04-25 12:36:05       91 阅读

热门阅读

  1. MacBook系统升级导致idea无法打开

    2024-04-25 12:36:05       34 阅读
  2. vue文件、js文件外部导入js

    2024-04-25 12:36:05       79 阅读
  3. 使用AWK进行文本处理

    2024-04-25 12:36:05       28 阅读
  4. 【2024中高级向】22道前端面试题附答案

    2024-04-25 12:36:05       29 阅读
  5. 上海计算机学会2020年5月月赛C++丙组T1戴口罩

    2024-04-25 12:36:05       36 阅读
  6. Linux红帽(RHCE)认证学习笔记

    2024-04-25 12:36:05       33 阅读
  7. 远程仓库.github/workflow的 yml如何配置

    2024-04-25 12:36:05       37 阅读