// FileToArray.cpp: implementation of the CFileToArray class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CBDataAndStr.h"
#include "FileToArray.h"
#include "stdlib.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CFileToArray::CFileToArray()
{
}
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>=48&&buf<=57)||buf==46||buf==45)
{
length++; //统计数据长度
}
else if(buf==13) //遇到换行跳过无效字节
{
num++; //统计数据个数
DataFile.Seek(1,CFile::current);
if(length>maxlength)
{
maxlength=length; //设定数据最大长度
}
length=0;
}
else
{
num++;
if(length>maxlength) //遇到数据间的分隔符统计数据个数,数据最大长度
{
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>=48&&buf<=57)||buf==46||buf==45)
{
Temp[NumOfTemp]=buf;
if(NumOfTemp<maxlength)
{
NumOfTemp++;
}
}
else if(buf==13)
{
DataFile.Seek(1,CFile::current);
if(IniNumOfDA<num)
{
for(int i=NumOfTemp;i<maxlength;i++)
{
Temp[NumOfTemp]=NULL;
}
DataArray[IniNumOfDA]=atof(Temp);
IniNumOfDA++;
NumOfTemp=0;
}
}
else
{
if(IniNumOfDA<num)
{
for(int i=NumOfTemp;i<maxlength;i++)
{
Temp[NumOfTemp]=NULL;
}
DataArray[IniNumOfDA]=atof(Temp);
IniNumOfDA++;
NumOfTemp=0;
}
}
}
DataFile.Close();
delete Temp;
}
double CFileToArray::GetDataArray(int num)
{
return DataArray[num];
}
int CFileToArray::GetNumOfArray()
{
return NumOfArray;
}
int CFileToArray::GetLengthOfData()
{
return LengthOfData;
}
vc读取TXT文件中的数值数据(类文件)
4星 · 超过85%的资源 需积分: 50 33 浏览量
2008-04-20
23:49:30
上传
评论 13
收藏 1KB RAR 举报
charp1984
- 粉丝: 3
- 资源: 2
最新资源
- python-leetcode面试题解之第157题用Read4读取N个字符-题解.zip
- python-leetcode面试题解之第156题上下翻转二叉树-题解.zip
- python-leetcode面试题解之第155题最小栈-题解.zip
- python-leetcode面试题解之第153题寻找旋转排序数组中的最小值-题解.zip
- python-leetcode面试题解之第152题乘积最大子数组-题解.zip
- python-leetcode面试题解之第151题反转字符串中的单词-题解.zip
- python-leetcode面试题解之第150题逆波兰表达式求值-题解.zip
- python-leetcode面试题解之第149题直线上最多的点数-题解.zip
- python-leetcode面试题解之第148题排序链表-题解.zip
- python-leetcode面试题解之第147题对链表进行插入排序-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
- 6
前往页