MFC二进制文件读取
1、mfc Document-vew doc类中读取
doc类中读取,在Vew类中可直接使用。
在菜单栏NewFile/OpenFile 后,系统自动调用Serialize()函数
if :写入文件
else:读取文件
eg:读取二进制文件(结构体数据)
// ChlDoc 序列化 void ChlDoc::Serialize(CArchive& ar)
{
TRACE(TEXT("DOC"));
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
}
else
{ // TODO: 在此添加加载代码
int dataSize = sizeof(StockDay);//结构体长度
CFile* fp = ar.GetFile();
int fLenght = fp->GetLength();//文件长度
int num = fLenght/dataSize;//列表长度
for(int i = 0; i<num; ++i)
{
StockDay sd;
ar>>sd.m_lDate;
ar>>sd.m_lOpenPrice;
ar>>sd.m_lMaxPrice;
ar>>sd.m_lMinPrice;
ar>>sd.m_lClosePrice;
ar>>sd.m_lMoney;
ar>>sd.m_lTotal;
ar>>sd.def1;
ar>>sd.def2;
ar>>sd.def3;
m_vecStockDay.push_back(sd);
}
}
}
vector <StockDay> m_vecStockDay;//类成员变量
//vector标准库引用
#include<vector>
using namespace std;
//结构体类型
struct StockDay
{
unsigned long m_lDate; /*year-month-day ,example: 19960616
分钟数据的表示方法如下:yymmddhhnn(年月日时分)
yy指的是year - 1990,故年份表达范围:1990 - 2011
如0905131045,指的是:1999年5月13号10点45分。*/
long m_lOpenPrice; //开
long m_lMaxPrice; //高
long m_lMinPrice; //低
long m_lClosePrice; //收
long m_lMoney; //成交金额
unsigned long m_lTotal; //成交量 单位:百股(手)
long def1;
long def2;
long def3;
};
二、直接使用CFile读取(常用)
直接读取,可使用 CFileDialog 选择读取文件路径
//结构体、m_vecStockDay 见方法一
//CString strPathName:读取文件的路径
CFile file;
if (file.Open( strPathName, CFile::modeRead, NULL ))
{
int dataSize = sizeof(StockDay); //结构体长度
int fLenght = file.GetLength(); //文件长度
int num = fLenght/dataSize; //列表长度
m_vecStockDay.resize(num); //为vector重新分配空间,具体理解见: http://www.cplusplus.com/reference/vector/vector/resize file.Read(m_vecStockDay.data(), fLenght);//vector.data()返回一个指针,该指针指向矢量内部用于存储元素的内存数组。
file.Close(); }
三、使用CFile打开文件,再使用CArchive序列化读取
//strPathName 文件路径
if (file.Open( strPathName, CFile::modeRead, NULL ))
{
int dataSize = sizeof(StockDay);//结构体长度
int fLenght = file.GetLength();//文件长度
int num = fLenght/dataSize;//列表长度 CArchive ar(&file, CArchive::load);//
int dataSize = sizeof(StockDay);//结构体长度
int fLenght = file.GetLength();//文件长度
int num = fLenght/dataSize;//列表长度
for(int i = 0; i<num; ++i)
{
StockDay sd;
ar>>sd.m_lDate;
ar>>sd.m_lOpenPrice;
ar>>sd.m_lMaxPrice;
ar>>sd.m_lMinPrice;
ar>>sd.m_lClosePrice;
ar>>sd.m_lMoney;
ar>>sd.m_lTotal;
ar>>sd.def1;
ar>>sd.def2;
ar>>sd.def3;
m_vecStockDay.push_back(sd);
}
}
ar.Close();
file.Close();
}
MFC二进制文件读取的更多相关文章
- MFC如何读取XML
<?xml version="1.0" encoding="utf-8"?> <Cases> <case> <No&g ...
- Snort里如何将一个tcpdump格式的二进制文件读取打印到屏幕上(图文详解)
不多说,直接上干货! 关于tcpdump二进制格式,这个基本概念不说. 支持tcpdump二进制格式的嗅探器工具,这里我说两个:tcpdump或者ethereal. [root@datatest Se ...
- tensorflow二进制文件读取与tfrecords文件读取
1.知识点 """ TFRecords介绍: TFRecords是Tensorflow设计的一种内置文件格式,是一种二进制文件,它能更好的利用内存, 更方便复制和移动,为 ...
- MFC webbrowser读取文档的meta分析
IDispatch* pDisp = NULL; IDispatch* pDisp2 = NULL; IHTMLDocument2 *pHtmlDoc2 = NULL; IHTMLElementCol ...
- cocos2d-x 二进制文件的读写
转自:http://blog.csdn.net/wolfking_2009/article/details/10616069 cocos2d-x里面的二进制文件读取的方法是有的,作者对方法封装了下,将 ...
- 【转】C++读写二进制文件
原文网址:http://blog.csdn.net/lightlater/article/details/6364931 摘要: 使用C++读写二进制文件,在开发中操作的比较频繁,今天有幸找到一篇文章 ...
- [Matlab+C/C++] 读写二进制文件
introduction 因为Matlab操作简单.方便,它被应用于很多领域:音频处理,图像处理,数值计算等.尽管MATLAB容易操作,但受限于他的语言解释机制,MATLAB的执行速度通常较低.C/C ...
- js 读取文件
读取文本文件 读取文本文件: <input type="file" id="file1" accept="*" /> </ ...
- 『TensorFlow』从磁盘读取数据
十图详解TensorFlow数据读取机制 一.输入流水线读取数据流程 1). 创建文件名列表 相关函数:tf.train.match_filenames_once 2). 创建文件名队列 相关函数:t ...
随机推荐
- python开发--python函数-(持续更新)
1. 打印 : print() # 打印,输出 2. 变量 : var = 'hello' # 变量var , 把'hello' 赋值给变量 var 3. if 函数 : # 代码块 4个空格或者一个 ...
- vscode实现远程linux服务器上Python开发
最近需要训练一个生成对抗网络模型,然后开发接口,不得不在一台有显卡的远程linux服务器上进行,所以,趁着这个机会研究了下怎么使用vscode来进行远程开发. 1 配置免密登录¶ (1)在 ...
- 如约而至,.NET 5.0 正式发布
作者:Richard 翻译:精致码农-王亮 原文:http://dwz.win/WFz 说明:文章太长,后面关于 C# 9 语言新特性及平台新特性的部分没有翻译,这部分基本都是代码示例,请直接阅读原文 ...
- 十个Pycharm快捷键——提升效率
一些比较实用的Pycharm的快捷键,提升编写开发效率. 1.解除语法限制 默认情况下,Pycharm会对代码进行检查,包括但不仅限于代码是否有语法错误,是否符合PEP8规范. 如命名检查,如下图 变 ...
- tp3.2 php sdk上传七牛云
//获取上传token Vendor('sdk.autoload'); $accessKey='********'; $secretKey='*******'; $auth=new \Qiniu\Au ...
- html的height:100%;高度是多少
html的height:100%;高度是多少 html设置height:100%;表示一屏高度,类似于100vh.未设置则根据子元素的高度来自适应高.在实际应用中,设置页面高度为1屏幕高度通常设置: ...
- 各种编程语言忽略http的SSL证书认证
目录 前言 代码 go语言 Python语言 Ruby语言 Java语言 PHP语言 C#语言 前言 我们内部测试的http服务器很多时候证书都是没有经过第三方认证的,我们发送http请求基本上都是忽 ...
- 从零开始实现ASP.NET Core MVC的插件式开发(九) - 升级.NET 5及启用预编译视图
标题:从零开始实现ASP.NET Core MVC的插件式开发(九) - 如何启用预编译视图 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/1399 ...
- HTTP 抓包 ---复习一下
1.connection 字段 2.accept 字段 3.user-agent 字段 4.host字段 等字段需要注意: HTTP事务的延时主要有以下:1).解析时延 DNS解析与DNS缓存 客 ...
- dst_output发包
不管是收到报文转发还是本机发送报文,最后都会调用dst_output /* Output packet to network from transport. */ static inline int ...