大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> visual c++对大型数据文件的读取

visual c++对大型数据文件的读取

时间: 2021-07-31 作者:daque

笔者前不久曾遇到一个题目,处置之后的体味愿与大师瓜分。题目是如许的,有一批数据文献,数据方法如次:日子,开盘,最高,最低,收盘,拍板量,拍板金额1996年5月13日,636.96,636.96,636.96,636.96,0,0,1996年5月14日,641.61,641.61,641.61,641.61,0,0,1996年5月15日,637.83,637.83,637.83,637.83,0,0,.............  诉求将数据填写到四张表中,再不作相映的领会。笔者发端用cfile和cstdiofile类的本领读取件。cfile类供给了鉴于二进制流的文献操纵,功效一致于c谈话中的fread()和fwrite()因变量。cstdiofile供给了鉴于字符串流的文献操纵,功效一致于c谈话中fgets()和fputs()因变量。然而笔者创造,运用这两个类举行文献操纵时,对于一次文献读写的数据量的巨细必需控制在65535字节以内。究其因为是在vc中考察大于65535字节的缓冲区须要huge型南针,而在cfile和cstdiofile类中,运用的是far型的南针。因为far型南针不具备跨段寻址的本领,所以控制了一次文献读写的长度小于65535字节。即使传播给cfile和cstdiofile两个类的分子因变量的数据缓冲区的巨细大于65535字节的功夫,vc就会爆发assert缺点。  对准文献方法特性,笔者改用carchive类举行读取如次:cfile sourcefile;//数据文献cstring sourcedata;//设置一偶尔变量生存一条记载sourcefile.open(.......);carchive ar(&sourcefile,carchive::load);while(null!=ar.readstring(sourcedata))//轮回读取文献,直到文献中断{if(sourcedata=="日子,开盘,最高,最低,收盘,拍板量,拍板金额"||sourcedata=="")continue;//跳过文献头部的提醒消息  //领会并弥补//}  在举行领会时,笔者采用了渐渐领会并窜改的方法,进程如次:int nyear;cstring year= sourcedata.left(sourcedata.find("年"));//截取年前方的字符串nyear=atoi(year);//典型变换sourcedata=sourcedata.righ(sourcedata.getlength()-sourcedata.find("年")-2);//将年以及前方的字符简略。  反复上头领会进程,直到记载结束。  经过上述本领,笔者胜利地将文献读取并领会弥补。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.