先看一下效果图

 BOOL Save2File()
{
BOOL bOpenFileDialog = FALSE; ---------------------------------- ①
BOOL bVistaStyle = FALSE; // no VistaStyle
TCHAR BASED_CODE szFilter[] = -------------------------------- ②
_T("二进制文件(*.dat)|*.dat|")
_T("All Files (*.*)|*.*||");
CString path_and_fileName; CFileDialog fdlg(bOpenFileDialog, _T("dat"), _T("*.dat"), ------- ③
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL, ,
bVistaStyle);
if (IDOK == fdlg.DoModal()) {
CFile fileSave;
CFileException ex; path_and_fileName = fdlg.GetPathName();
if (!fileSave.Open(path_and_fileName, CFile::modeCreate |
CFile::modeWrite | CFile::typeBinary, &ex)) { ------④
TCHAR szError[];
ex.GetErrorMessage(szError, );
MessageBox(NULL, szError, _T("提示"), MB_OK);
return FALSE;
}
CArchive ar(&fileSave, CArchive::store); ---------------------⑤
for (int i=;i<BUFF_LENGTH;i++) {
ar<<dataBuf[i]; ------------------------------------------⑥
}
ar.Close();
fileSave.Close();
} return TRUE;
}

①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实现保存到二进制文件的更多相关文章

  1. mfc 导出数据保存成excel和txt格式

    最近做了一些东西,项目到了收尾的工作.不过这次我没有参与到控件机器的功能的那一部分,都是主管自己写的.不过,所有的控件重写都是由我来做的.还有数据库这一方面是我和主管共同完成的.不过还不错,主管写一部 ...

  2. C语言 结构体数组保存到二进制文件中

    在项目中我定义了一个结构体数组,头文件如下: C/C++ code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

  3. 孙鑫MFC学习笔记13:文档

    1.CArchive类保存内存数据 2.CAchive类重载了>>与<<操作符,类似C++文件流 3.在OnNewDocument中通过SetTitle设置标题 4.字符串资源 ...

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

    二进制文件和ASCII文件(即文本文件)的差别,对于和计算机亲近时间尚短的同学是个难题.本文用简单的样例,试图展示当中的道道,希望能对菜鸟们有些帮助. 1.一个样例:两种100000 有程序: #in ...

  5. Protocol Buffers(3):阅读一个二进制文件

    目录 Proto文件 序列化 二进制文件解析 反序列化 参考 博客:blog.shinelee.me | 博客园 | CSDN 这篇文章中,我们将定义一个相对复杂的数据结构,直接分析其序列化后的二进制 ...

  6. Numpy数组的保存与读取

    1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 np.save(&quo ...

  7. TensorFlow学习笔记:保存和读取模型

    TensorFlow 更新频率实在太快,从 1.0 版本正式发布后,很多 API 接口就发生了改变.今天用 TF 训练了一个 CNN 模型,结果在保存模型的时候居然遇到各种问题.Google 搜出来的 ...

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

    二进制文件和ASCII文件(即文本文件)的区别,对于和计算机亲近时间尚短的同学是个难题. 1.一个例子:两种100000 有程序: #include<iostream> using nam ...

  9. 读取和反序列化Hadoop二进制文件

    目录 问题描述 反序列化代码 问题描述 Hadoop在运行MR时,经常要将一些中间结果存到本地,为了节省存储空间,Hadoop采用序列化机制(Hadoop的序列化机制和Java的有所不同)将数据保存为 ...

随机推荐

  1. HDU 3030 - Increasing Speed Limits

    Problem Description You were driving along a highway when you got caught by the road police for spee ...

  2. sublime text 2中Windows下编写的脚本在Linux平台上运行遇到字符问题

    今天在windows下的sublime text 2下写了个脚本,上传到ubuntu服务器中执行后提示: -bash: /usr/bin/python: /usr/bin/python^M: bad ...

  3. cURL模拟POST方式提交数据

    curl_post.php文件: 1 $url = 'http://localhost/test/curl_post_deal.php'; 2 3 $post_data = array( 4 'use ...

  4. 初学swift笔记 流程控制(五)

    import Foundation ; i<=; i++ { println(i) } let str1="adl;fjasdfl;ouewrouqwperuadf" for ...

  5. 通过实例深入理解lec和yacc

    本框架是一个lex/yacc完整的示例,包括详细的注释,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行.大部分框架已经搭好了,你只要稍加扩展就可以 ...

  6. Oracle EBS-SQL (INV-1):检查物料成本为0并且物料状态不是'NEW'的物料.sql

    select --msi.inventory_item_id        --,msi.organization_id     msi.segment1                        ...

  7. Delphi实现全局鼠标钩子

    其中涉及到的一些API,网上均能查到详细的解释,这里不再熬述.源码下载 因为是全局钩子,所以要用dll注入.用到的鼠标消息结构如下: PMouseHookStruct = ^TMouseHookStr ...

  8. python魔术方法

    在类中有一些特殊的方法具有特殊的意义,比如__init__和__del__方法,它们的重要性我们已经学习过了. 一般说来,特殊的方法都被用来模仿某个行为.例如,如果你想要为你的类使用x[key]这样的 ...

  9. mysql入库中文乱码问题

    mysql> show variables like '%char%';+--------------------------+----------------------------+| Va ...

  10. c++学习笔记(c++中的引用)

    1.c++中的bool类型:     其实c语言中也有bool类型,如果是遵守c90标准的编译器(其实现在大量编译器都是c90标准的),对于bool类型的使用除了要使用头文件 stdbool.h外,与 ...