MFC CArchive实现保存到二进制文件

先看一下效果图


 1 BOOL Save2File()
2 {
3 BOOL bOpenFileDialog = FALSE; ---------------------------------- ①
4 BOOL bVistaStyle = FALSE; // no VistaStyle
5 TCHAR BASED_CODE szFilter[] = -------------------------------- ②
6 _T("二进制文件(*.dat)|*.dat|")
7 _T("All Files (*.*)|*.*||");
8 CString path_and_fileName;
9
10 CFileDialog fdlg(bOpenFileDialog, _T("dat"), _T("*.dat"), ------- ③
11 OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL, 0,
12 bVistaStyle);
13 if (IDOK == fdlg.DoModal()) {
14 CFile fileSave;
15 CFileException ex;
16
17 path_and_fileName = fdlg.GetPathName();
18 if (!fileSave.Open(path_and_fileName, CFile::modeCreate |
19 CFile::modeWrite | CFile::typeBinary, &ex)) { ------④
20 TCHAR szError[1024];
21 ex.GetErrorMessage(szError, 1024);
22 MessageBox(NULL, szError, _T("提示"), MB_OK);
23 return FALSE;
24 }
25 CArchive ar(&fileSave, CArchive::store); ---------------------⑤
26 for (int i=0;i<BUFF_LENGTH;i++) {
27 ar<<dataBuf[i]; ------------------------------------------⑥
28 }
29 ar.Close();
30 fileSave.Close();
31 }
32
33 return TRUE;
34 }

①bOpenFileDialog为FALSE,弹出对话框为File
save as,若为TRUE,弹出对话框为File Open;

②文件类型过滤字符串,这个仅仅是在保存的文件类型里面可选的内容,文件过滤要在第③项里面设置;

③_T("dat"),
_T("*.dat")这两个字符串设置文件过滤类型跟默认文件名,这个过滤是在选择的时候只显示过滤的文件。

④CFile::typeBinary设置允许二进制方式打开文件;

⑤根据打开的文件创建串行化对象,将ar与fileSave关联,并设置CArchive::store

⑥直接写入ar就是二进制方式对文件的写入ar<<dataBuf[i],之后注意关闭:

ar.Close();

fileSave.Close();

MFC CArchive实现保存到二进制文件,码迷,mamicode.com

时间: 2024-08-28 12:08:30

MFC CArchive实现保存到二进制文件的相关文章

EasyUI Treegrid的使用--初始化、添加同级节点、字节节点、保存数据以及保存二进制文件

前序:该篇文章将treegrid的使用,侧重于添加节点的方法,如何保存节点到数据库.不过获取节点数据的方法有点傻.将就着,若下次还遇到使用treegrid的情况,将会好好研究一下如何更好的传递节点数据到后台.另外,文章的代码存在小问题.不过都被我用取巧的方法解决掉. 存在的问题:为什么选中根节点后,用getSelected方法,得到的是null?? 取巧的解决方法:初始化treegrid时,顺便加载onClickRow()方法,当选中一行的时候,将该行的id赋值到全局变量selectedSelf

二进制文件和ASCII文件有何区别

二进制文件和ASCII文件(即文本文件)的区别,对于和计算机亲近时间尚短的同学是个难题. 1.一个例子:两种100000 有程序: [cpp] view plain copy print? #include<iostream> using namespace std; int main( ) { char c[8]="100000"; int n=100000; cout<<"c="<<c<<endl; cout<

二进制文件和ASCII文件有何差别

二进制文件和ASCII文件(即文本文件)的差别,对于和计算机亲近时间尚短的同学是个难题.本文用简单的样例,试图展示当中的道道,希望能对菜鸟们有些帮助. 1.一个样例:两种100000 有程序: #include<iostream> using namespace std; int main( ) { char c[8]="100000"; int n=100000; cout<<"c="<<c<<endl; cout&

初学Python写二进制文件

初学Python写二进制文件 把一个图片的16进制数据保存到一个txt文本,从这个txt文本读出并保存为二进制文件jpg图片文件.说明:图片读出的0xff粘贴ff到文本中,读出时是字符串的"ff". 我主要是用C语言,python为初学,python的编码思想还是用C的思想. 一.C的实现: #include <stdio.h> #include <string.h> /******************************* 函数名:DSP_2_HEX

numpy 保存数据

以3*4数组a为例: 1. a.tofile("filename.bin") 这种方法只能保存为二进制文件,且不能保存当前数据的行列信息,文件后缀不一定非要是bin,也可以为txt,但不影响保存格式,都是二进制. 这种保存方法对数据读取有要求,需要手动指定读出来的数据的的dtype,如果指定的格式与保存时的不一致,则读出来的就是错误的数据. b = numpy.fromfile("filename.bin",dtype = **) 读出来的数据是一维数组,需要利用

Numpy中数据的常用的保存与读取方法

Numpy中数据的常用的保存与读取方法 小书匠 深度学习 文章目录: 1.保存为二进制文件(.npy/.npz) numpy.save numpy.savez numpy.savez_compressed 2.保存到文本文件 numpy.savetxt numpy.loadtxt 在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件进行介绍: 1.保

C++读取保存为二进制的 numpy 数组

首先需要确定C++和Python中变量对应的精度类型, https://docs.scipy.org/doc/numpy/user/basics.types.html#array-types-and-conversions-between-types 常用的, C++int对应Pythonnp.intc C++float对应Pythonnp.single C++double对应Pythonnp.double numpy数组保存为二进制文件 import numpy as np a = np.ar

Python Numpy中数据的常用的保存与读取方法

在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件进行介绍: 1.保存为二进制文件(.npy/.npz) numpy.save 保存一个数组到一个二进制的文件中,保存格式是.npy 参数介绍 numpy.save(file, arr, allow_pickle=True, fix_imports=True) file:文件名/文件路径 arr:要存

[转]C#的二进制文件操作及关于Encoding类与汉字编码转换的问题

1.数值应保存在二进制文件 首先列举文本.二进制文件的操作(读写)方法: 方式1: //文本文件操作:创建/读取/拷贝/删除 using System; using System.IO; class Test { string path = @"f:/t.txt"; public static void Main() { //创建并写入(将覆盖已有文件) if (!File.Exists(path)) { //StreamWriter m=new //StreamWriter(path