C++二进制文件读写

要求:

  •   用fstream类创建并打开二进制文件
  •   在文件中存入int,double 5 个基本数据类型
  •   自定义类,并在文件中存入一个类对象
  •   从文件中读取所有基本数据类型
  •   从文件中读取第3个基本类型数据
  • 从文件中读取类对象并使用
 1 #include<iomanip>
 2 #include <fstream>
 3 #include<iostream>
 4 #include<cstring>
 5 using namespace std;
 6 class Time {
 7 public:
 8     int year;
 9     int month;
10     void Display()
11     {
12         cout<<year<<" "<<month;
13     }
14 };
15 int main()
16 {
17     //用fstream创建并打开文件
18     fstream OutFile("binaryy.dat", ios::out| ios::in| ios::binary);
19     //写入基本数据类型
20     int a;float b;double c;char d;bool e;
21         a=1; b=1.34; c=1.3415826; d=‘p‘; e=0;
22         OutFile.write((char *)&a,sizeof(a));
23         OutFile.write((char *)&b,sizeof(b));
24         OutFile.write((char *)&c,sizeof(c));
25         OutFile.write((char *)&d,sizeof(d));
26         OutFile.write((char *)&e,sizeof(e));
27     //写入类对象
28         Time t;
29         cin>>t.year>>t.month;
30         OutFile.write((char *) &t, sizeof(t));
31     OutFile.close();
32     fstream inFile("binaryy.dat", ios::in | ios::binary);
33     if (!inFile)
34     {
35         cout << "error" << endl;
36         return 0;
37     }
38     //int a;float b;double c;char d;bool e;
39     //读取所有基本类型
40     inFile.read((char *)&a,sizeof(a));
41         //cout<<a<<endl;
42     inFile.read((char *)&b,sizeof(b));
43         //cout<<b<<endl;
44     inFile.read((char *)&c,sizeof(c));
45         //cout<<c<<endl;
46     inFile.read((char *)&d,sizeof(d));
47         //cout<<d<<endl;
48     inFile.read((char *)&e,sizeof(e));
49         //cout<<e<<endl;
50     cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
51     //读取类对象
52     inFile.read((char *)&t,sizeof(t));
53         cout << t.year << " " << t.month << endl;
54     //读取第三个基本类型
55     double tmp;
56     inFile.seekg(sizeof(int)+sizeof(float),ios::beg);
57     //while(inFile.get(tmp))    cout<<tmp;
58     inFile.read((char *)&tmp,sizeof(double));
59     cout<<tmp<<endl;
60     //使用类对象
61     t.Display();
62     inFile.close();
63     return 0;
64 }

结果如下:

  

原文地址:https://www.cnblogs.com/DSYR/p/9157461.html

时间: 2024-08-30 13:29:10

C++二进制文件读写的相关文章

[转载:]Fortran 二进制文件读写

一些朋友总是咨询关于二进制文件的读写和转化.这里就我自己的理解说一说. 一).一般问题 二进制文件与我们通常使用的文本文件储存方式有根本的不同.这样的不同很难用言语表达,自己亲自看一看,理解起来会容易得多.因此,我推荐学习二进制文件读写的朋友安装一款十六进制编辑器.这样的编辑器有很多,在我们的 CVF 附带的集成开发环境下就可以(将二进制文件拖动到 IDE 窗口后松开).Visual Studio 2005 也是可以的.(不过需要在 File 菜单下 Open,File) 另外推荐一款使用较多的

[转载]C语言实现二进制文件读写

转载于:https://blog.csdn.net/aresgod/article/details/1852321 我一直觉得二进制文件读写是个很容易的事,所以一直没在意,最近在写一个http客户端,实现文件下载的时候,发现总有问题,后来才发现是忘记写文件用二进制方式,惭愧的很啊. 然后,就在网上搜索了一下,发现通过C语言实现二进制文件读写的资料居然出奇的少,这让我很愤怒,因为虽然这东西很简单,但是对于初学者,往往会需要花很长的时间去弄,一旦明白,又发现花的时间很不值得,罢了,这里通过一个文件拷

Qt 学习 之 二进制文件读写

在上一章中,我们介绍了有关QFile和QFileInfo两个类的使用.我们提到,QIODevice提供了read().readLine()等基本的操作.同时,Qt 还提供了更高一级的操作:用于二进制的流QDataStream和用于文本流的QTextStream.本节,我们将讲解有关QDataStream的使用以及一些技巧.下一章则是QTextStream的相关内容. QDataStream提供了基于QIODevice的二进制数据的序列化.数据流是一种二进制流,这种流完全不依赖于底层操作系统.CP

Qt 学习之路:二进制文件读写

在上一章中,我们介绍了有关QFile和QFileInfo两个类的使用.我们提到,QIODevice提供了read().readLine()等基本的操作.同时,Qt 还提供了更高一级的操作:用于二进制的流QDataStream和用于文本流的QTextStream.本节,我们将讲解有关QDataStream的使用以及一些技巧.下一章则是QTextStream的相关内容. QDataStream提供了基于QIODevice的二进制数据的序列化.数据流是一种二进制流,这种流完全不依赖于底层操作系统.CP

VB二进制文件读写

数组存取 存数组 Private Sub Command2_Click() Dim fileNumber As Integer Dim S9 As String Dim k As Integer Dim l As Integer On Error Resume Next fileNumber = FreeFile() S9 = "D:\zs.txt" If Dir(S9) <> "" Then Kill S9 Open S9 For Binary As

Unity3D BakeMesh 因二进制文件读写字符串的方式导致莫名bug

由其他人提供的插件,bake mesh static void writeString(BinaryWriter bw, string str, int cap) { var ba = new byte[cap]; var bs = System.Text.Encoding.ASCII.GetBytes(str); Array.Copy(bs, ba, bs.Length); bw.Write(ba); } 直接导致了当字符串过长的时候,内容读取的缺失和后续连锁导致序列化的错误. 解决方案: 1

Java读写二进制文件示例

相对于文本文件,二进制文件读写快,定位快而准,下面是代码示例: import java.io.DataInput; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.FileOutputStream; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; class Employee{

【C/C++学院】0826-文件重定向/键盘输入流/屏幕输出流/字符串输入输出/文件读写简单操作/字符文件读写二进制与文本差别/get与getline挖掘数据/二进制与文本差别/随机位置/多线程初级

文件重定向 #include<iostream> using namespace std; void main() { char str[30] = { 0 }; cin >> str; cout << str; system(str); cerr << "error for you"; cin.get(); cin.get(); } 键盘输入流 #include<iostream> #include <stdlib.h

「C语言」文件的概念与简单数据流的读写函数

写完「C语言」单链表/双向链表的建立/遍历/插入/删除 后,如何将内存中的链表信息及时的保存到文件中,又能够及时的从文件中读取出来进行处理,便需要用到”文件“的相关知识点进行文件的输入.输出. 其实,就算不懂得链表,也完全可以学习”文件“相关知识点,但在此之前最好有”指针“基础. 本篇文章整理自<C语言程序设计教程--人民邮电出版社>第十二章——文件,以作文件探讨. 一.数据流与文件概念 二.文件的打开与关闭 三.文件的顺序读写 四.文件的随机读写 一.数据流与文件概念 1.数据流 数据的输入