VC实现从TXT文件中读取数值型数据(转).docVIP

VC实现从TXT文件中读取数值型数据(转).doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC实现从TXT文件中读取数值型数据(转)

VC实现从TXT文件中读取数值型数据(转) 最近老师经常留用VC实现算法的作业,要想做出个界面来就必须从文件中读取大量的数据(手动输入太累了,神经网络的训练集还是很大的!)。从一个.dat文件中读取数值数据并不难,但是建立.dat文件就不是那么方便了。所以只能用我们常见的TXT文件了,在网上也没找到具体的算法只能自己动手了,初学VC还是碰到了很多问题,读取文件就出了很多错!第一次感觉到编程真的是一件很费脑子的事! 为了以后方便使用,我用一个类实现这个功能,用一个带有TXT文件路径参数的构造函数初始化对象,在初始化的过程中就把TXT文件中的数据,以数值的方式存到对象成员变量中。我用的CFILE类实现的读取数据,这个用起来还是比较直观,也可以用一些更基本的函数实现。设计过程中的关键点主要有下面几个: 1、保存数据的数组要在读取出文件中数据的个数后动态分配内存空间,不浪费内存。 2、把字符串转换成数组,这里用的是atof函数(要包含头文件stdlib.h)。 3、截取字符串,在TXT文件中不存在换行的情况下截取数据字符串还是很简单的,只要读取到的字符不是数字、小数点、负号等就截取。但是,有时候为了能够更只管的观察数据,需要保存成矩阵形式,这就需要换行了,TXT文件换行时包含两个字符,可以用二进制文件查看器查到,先是回车(ASCII码为13)再是换行(ASCII码为10),这时就在截取条件中加入回车,还要要跳过换行字符。 以下是.h和.cpp文件中的核心代码,也可以去/source/423451下载原文件。 class CFileToArray { public: int GetLengthOfData(); int GetNumOfArray(); double GetDataArray(int num); //读取数组中的数据 CFileToArray(); CFileToArray(CString filename); //带TXT文件路径参数的构造函数 virtual ~CFileToArray(); private: CFile DataFile; //TXT文件 int NumOfArray; //TXT文件中包含的数值数据个数 int LengthOfData; //数值数据字符串的最大长度 double *DataArray; //存放数值数据的数据,这里用的是DOUBLE型,可以根据自己需要改变 }; CFileToArray::~CFileToArray() { delete DataArray; //释放内存 } CFileToArray::CFileToArray(CString filename) { char buf; //读取文件时的临时变量 int num=0; //数组元素个数记数 int maxlength=0; //数组元素的最大长度 int length=0; char *Temp; //截取到的每个数据的字符串 DataFile.Open(filename,CFile::modeRead); //打开文件 while(DataFile.Read(buf,sizeof(char))) //读取文件,每次读取一个字节存在buf变量中 { if((buf=48buf=57)||buf==46||buf==45) { length++; //统计数据长度 } else if(buf==13) //遇到换行跳过无效字节 { num++; //统计数据个数 DataFile.Seek(1,CFile::current); if(lengthmaxlength) { maxlength=length; //设定数据最大长度 } length=0; } else { num++; if(lengthmaxlength) //遇到数据间的分隔符统计数据个数,数据最大长度 { maxlength=length; } length=0; } } LengthOfData=maxlength; //为类中数据长度变量赋值 NumOfArray=num; //为类中数据个数变量赋值 DataArray=new double[num]; //为类中存储数据的数组申请内存空间 Temp=new char[maxlength]; //为临时存储串申请内存空间 int NumOfTemp=0; //临时串记的数变量 int IniNumOfDA=0; //存储数据数组的记数变量 DataFile.SeekToBegin(); //设定文件读取位置,重新从头读取 while(DataFile.Read(buf,sizeof(char))) { if((buf=48buf=57)||buf==46||buf==45) {

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档