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二进制文件读取的更多相关文章

  1. MFC如何读取XML

    <?xml version="1.0" encoding="utf-8"?> <Cases> <case> <No&g ...

  2. Snort里如何将一个tcpdump格式的二进制文件读取打印到屏幕上(图文详解)

    不多说,直接上干货! 关于tcpdump二进制格式,这个基本概念不说. 支持tcpdump二进制格式的嗅探器工具,这里我说两个:tcpdump或者ethereal. [root@datatest Se ...

  3. tensorflow二进制文件读取与tfrecords文件读取

    1.知识点 """ TFRecords介绍: TFRecords是Tensorflow设计的一种内置文件格式,是一种二进制文件,它能更好的利用内存, 更方便复制和移动,为 ...

  4. MFC webbrowser读取文档的meta分析

    IDispatch* pDisp = NULL; IDispatch* pDisp2 = NULL; IHTMLDocument2 *pHtmlDoc2 = NULL; IHTMLElementCol ...

  5. cocos2d-x 二进制文件的读写

    转自:http://blog.csdn.net/wolfking_2009/article/details/10616069 cocos2d-x里面的二进制文件读取的方法是有的,作者对方法封装了下,将 ...

  6. 【转】C++读写二进制文件

    原文网址:http://blog.csdn.net/lightlater/article/details/6364931 摘要: 使用C++读写二进制文件,在开发中操作的比较频繁,今天有幸找到一篇文章 ...

  7. [Matlab+C/C++] 读写二进制文件

    introduction 因为Matlab操作简单.方便,它被应用于很多领域:音频处理,图像处理,数值计算等.尽管MATLAB容易操作,但受限于他的语言解释机制,MATLAB的执行速度通常较低.C/C ...

  8. js 读取文件

    读取文本文件 读取文本文件: <input type="file" id="file1" accept="*" /> </ ...

  9. 『TensorFlow』从磁盘读取数据

    十图详解TensorFlow数据读取机制 一.输入流水线读取数据流程 1). 创建文件名列表 相关函数:tf.train.match_filenames_once 2). 创建文件名队列 相关函数:t ...

随机推荐

  1. CodeForces 1067E Random Forest Rank

    题意 给定一棵 \(n\) 个节点的树,每条边有 \(\frac{1}{2}\) 的概率出现,这样会得出一个森林,求这个森林的邻接矩阵 \(A\) 的秩 \(\operatorname{rank} A ...

  2. 小白自己对while循环的理解

  3. ubuntu18.04 安装RabbitVCS

    因为仓库安装一直安装不上所以手动安装 第一步:下载 https://github.com/rabbitvcs/rabbitvcs/ 安装 解压安装 python setup.py install -- ...

  4. 没有真实串口设备时使用"虚拟串口驱动"调试你的串口代码

    目录 前言 示例代码 总结 前言 很多时候需要编写串口代码,但是又没有真实串口设备来调试代码.以及本身就是要操作2个串口的情况,可以使用"虚拟串口驱动"工具方便的调试代码. 使用方 ...

  5. C++如何实现多态

    1.   什么是多态多态是C++中的一个重要的基础,面向对象编程语言中,接口的多种不同的实现方式即为多态.2.   多态带来的好处多态带来两个明显的好处:一是不用记大量的函数名了,二是它会依据调用时的 ...

  6. 11Linux之软件包管理

    11Linux之软件包管理 目录 11Linux之软件包管理 11 软件包管理 11.1 软件包介绍 11.1.1 编程语言分类 11.1.2 三种安装包 11.2 rpm包管理 11.2.1 rpm ...

  7. EF Core 二 、 入门 EF Core

    入门EF Core 我们将开始真正的EF之旅了,这里使用SqlServer数据,然后DbFirst: 为嘛使用SqlServer,目前公司的整体业务全部在SqlSever,所以很多产品业务都是依托于这 ...

  8. Html+css 一个简单的网页模板

    一个简单的网页模板,有导航.子菜单.banner部分 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&q ...

  9. SQL SERVER数据库使用过程中系统提示死锁处理办法

    马上双节(国庆节.中秋节)了,这篇文章是双节前的最后一篇,祈祷过节期间,数据库稳定运行,服务器正常发挥.祝大家假期愉快!!!! 任何的数据库都会出现死锁的情况,特别是一些大型的复杂业务,数据库架构的设 ...

  10. netcore一键部署到linux服务器以服务方式后台运行

    @font-face { font-family: octicons-link; src: url("data:font/woff;charset=utf-8;base64,d09GRgAB ...