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 ...
随机推荐
- CodeForces 1067E Random Forest Rank
题意 给定一棵 \(n\) 个节点的树,每条边有 \(\frac{1}{2}\) 的概率出现,这样会得出一个森林,求这个森林的邻接矩阵 \(A\) 的秩 \(\operatorname{rank} A ...
- 小白自己对while循环的理解
- ubuntu18.04 安装RabbitVCS
因为仓库安装一直安装不上所以手动安装 第一步:下载 https://github.com/rabbitvcs/rabbitvcs/ 安装 解压安装 python setup.py install -- ...
- 没有真实串口设备时使用"虚拟串口驱动"调试你的串口代码
目录 前言 示例代码 总结 前言 很多时候需要编写串口代码,但是又没有真实串口设备来调试代码.以及本身就是要操作2个串口的情况,可以使用"虚拟串口驱动"工具方便的调试代码. 使用方 ...
- C++如何实现多态
1. 什么是多态多态是C++中的一个重要的基础,面向对象编程语言中,接口的多种不同的实现方式即为多态.2. 多态带来的好处多态带来两个明显的好处:一是不用记大量的函数名了,二是它会依据调用时的 ...
- 11Linux之软件包管理
11Linux之软件包管理 目录 11Linux之软件包管理 11 软件包管理 11.1 软件包介绍 11.1.1 编程语言分类 11.1.2 三种安装包 11.2 rpm包管理 11.2.1 rpm ...
- EF Core 二 、 入门 EF Core
入门EF Core 我们将开始真正的EF之旅了,这里使用SqlServer数据,然后DbFirst: 为嘛使用SqlServer,目前公司的整体业务全部在SqlSever,所以很多产品业务都是依托于这 ...
- Html+css 一个简单的网页模板
一个简单的网页模板,有导航.子菜单.banner部分 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&q ...
- SQL SERVER数据库使用过程中系统提示死锁处理办法
马上双节(国庆节.中秋节)了,这篇文章是双节前的最后一篇,祈祷过节期间,数据库稳定运行,服务器正常发挥.祝大家假期愉快!!!! 任何的数据库都会出现死锁的情况,特别是一些大型的复杂业务,数据库架构的设 ...
- netcore一键部署到linux服务器以服务方式后台运行
@font-face { font-family: octicons-link; src: url("data:font/woff;charset=utf-8;base64,d09GRgAB ...