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. Luogu P3757 [CQOI2017]老C的键盘

    题目描述 老C的键盘 题解 显然对于每个数 x 都有唯一对应的 \(x/2\) , 然而对于每个数 x 却可以成为 \(x*2\) 和 \(x*2+1\) 的对应数 根据这一特性想到了啥??? 感谢l ...

  2. Windows 端口被占用,但进程号对应的进程不存在,使用Get-Process来查找进程挺方便的

    Windows上很少安装数据库,这次遇到一个小问题:数据库启动之后提示: 警告: 无法为 "*" 创建监听套接字 致命错误: 无法创建TCP/IP套接字 日志: 数据库系统已关闭 ...

  3. pytho爬虫使用bs4 解析页面和提取数据

    页面解析和数据提取 关注公众号"轻松学编程"了解更多. 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的 ...

  4. 『JVM』我不想知道我是怎么来滴,我就想知道我是怎么没滴

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  5. docker部署redis主从和哨兵

    docker部署redis主从和哨兵 原文地址:https://www.jianshu.com/p/72ee9568c8ea 1主2从3哨兵 一.前期准备工作 1.电脑装有docker 2.假设本地i ...

  6. Maven依赖管理系统

    [背景] 之前在领英上读到一篇软文,<Managing Software Dependency at Scale>,讲述了领英是如何处理模块之间的依赖解析,以及如何去更好的处理依赖关系以及 ...

  7. Android Studio导入github项目源码步骤

    1.从github上将源码下载下来 2.打开AS,新建一个新项目(我选择了EmptyActivity) 3.先不要在AS 中打开源码,来整理源码 在源码的目录下面,将project下的build.gr ...

  8. 【笔记】拉勾Java工程师高薪训练营-第一阶段 开源框架源码解析-模块一 持久层框架涉及实现及MyBatis源码分析-任务一:自定义持久层框架

    以下笔记是我看完视频之后总结整理的,部分较为基础的知识点也做了补充,如有问题欢迎沟通. 目录 任务一:自定义持久层框架 1.1 JDBC回顾及问题分析 1.2 自定义持久层框架思路分析 1.3 IPe ...

  9. JAVA基础之接口与内部类

    接口与内部类 目录 接口与内部类 1. Lambda表达式 1. 关于懒计算 2. Predicate接口 3. 关于方法引用 4. 关于构造器引用 5. 关于变量的作用域 2. 内部类 1. 局部内 ...

  10. IP 层收发报文简要剖析1-ip报文的输入

    ip层数据包处理场景如下: 网络层处理数据包文时需要和路由表以及邻居系统打交道.输入数据时,提供输入接口给链路层调用,并调用传输层的输入接口将数据输入到传输层. 在输出数据时,提供输出接口给传输层,并 ...