标题:请教--将txt文件里的头文件 和 数据Array 读出画图
只看楼主
bccome
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-8-11
结帖率:100%
已结贴  问题点数:20 回复次数:4 
请教--将txt文件里的头文件 和 数据Array 读出画图
构想:想要将一个含有X,Y 坐标(下面的RawData第1,2列)的一个测试结果(从第三行到结尾分别是不同的测试结果)画成图。
在打开一个文件的对话框,选择一个文件就绘图,在旁边的区域显示 文件的信息(一开始到RawData 上面的信息。
原始文件:
ID:AA97-6149
Test Program:3333A-CP0
Tester ID:1HTDD02
Start Time:2009/08/25 13:05:04
End Time:2009/08/25 13:31:23
Grid Xmax:80
Grid Ymax:80
RawData
  32   8   1   1 0  50  1  1  126.57  129.06  129.11  127.45    4.08    3.56    2.88    2.42  1.00  0.00  0.98  0.99  0  0  0  0  0
  33   8   1   1 0  50  1  1  133.21  133.77  133.85  134.01    4.10    3.62    2.92    2.43  2.00  1.00  1.00  1.00  0  0  0  0  0
  34   8   1   1 0  50  1  1  130.34  131.30  131.39  131.13    4.10    3.61    2.92    2.44  2.00  1.00  0.99  1.00  0  0  0  0  0
.................
.................
.................
  34  51   1   1 0  50  1  1  126.76  125.62  125.63  127.53    4.14    3.67    2.97    2.45  6.00  4.00  1.01  1.02  0  0  0  0  0
  33  51   1   1 0  50  1  1  116.99  118.64  118.68  117.67    4.12    3.63    2.93    2.45  4.00  4.00  0.99  0.99  0  0  0  0  0
  32  51   1   1 0  50  1  1  121.66  121.96  122.03  122.36    4.13    3.65    2.95    2.45  5.00  4.00  1.00  1.00  0  0  0  0  0
DataEnd
我用MFC 的一个单文档文件,加了一个OnMap按钮打开文档,按OK读取数据,
这是我学别人的代码,读到一个Char数组,但是不知道怎么分割成我要的不同类型的数组
void CCPMAPView::OnCpMap()
{
    // TODO: Add your command handler code here
    CFileDialog fileDlg(TRUE);
    fileDlg.m_ofn.lpstrTitle="CPFile";
    fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
   
    if(IDOK==fileDlg.DoModal())
    {
        CFile file(fileDlg.GetFileName(),CFile::modeRead);
        char *pBuf;
        DWORD dwFileLen;
        dwFileLen=file.GetLength();
        pBuf=new char[dwFileLen+1];
        pBuf[dwFileLen]=0;
        file.Read(pBuf,dwFileLen);
        file.Close();
    }
}
我是想将前面的描述文件 按":" 分成文件名 和对应的内容,
有面的data想写到一个带有x,y paremeter 的class,类似 Result(int Xposi,int Yposi),其余的每一列数据都变成这个类的成员变量。
这样我在画图的时候调用 这个Class和他的成员变量可以显示坐标和设定不同的颜色。

我是一个新人,刚刚开始学C++,不知道怎么弄,
希望各位老大能帮我一下,怎样将 txt文件读入,转换成  前面的描述文件 和 后面的class数组。
这是我第一个编写的使用的程序,各位的帮助一定铭记终身!先谢过了

搜索更多相关主题的帖子: Array txt 画图 文件 数据 
2009-08-30 08:38
bccome
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-8-11
得分:0 
怎么都没有人回答?
2009-08-30 16:58
xufen340
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1351
注 册:2009-8-7
得分:20 
不是太明白你后面讲的类,前面其是你就是取文本文件里的数据。 写一个给你。

/*看你数据第8行开始*/
//搜索文本文件到第8行,第8行开始是数据
int nline=0;
int posi=0;
while(nline<8){
    //是不是回车
    if(pBuf[posi]=='\0'){
        nline++;
    }
    posi++;
}
/*这里完成所有的数据提取*/
//循环直到posi=文件长度
while(posi!=dwFileLen){
//看你文本最后一行市DataEnd所以如果到了D就是到最后一行,直接退出循环。   
    if(pBuf[posi]=='D'){
        break;
    }
//从数据开始找,找到空格或者回车为止,取得每个数据长度。
    while(pBuf[posi]!=32||pBuf[posi]=='\0'){
        ncount++;
        posi++;
    }
//取每个数串转化为一实数
    char* pnBuf=new char[ncount];
    for(int i=0;i<ncount;i++)
    {
        pnBuf[i]=pBuf[posi-ncount+i];
    }
//找到字符串后转化为double型
    double dtmp=strtod(pnBuf,NULL);//(#include<stdlib.h>)
    delete[] pnBuf;

//创建链表来存放各数值,用来调用,head指向链表头。
    struct link{
        double val;
        struct link* next;
    };

    link* head;
    link* p;
    link* q;
    p=(link*)malloc(sizeof(link));
    p->val=dtmp;
    p->next=NULL;
    if(head!=NULL){
       q->next=p;
       q=q->next;
    }else{
        head=p;
        p=head;
    }
//找到空格posi再往后移一位
    posi++;
}

   
2009-08-30 19:36
xufen340
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1351
注 册:2009-8-7
得分:0 
当你数据量很大,最好用new代替malloc,先new个1000,不够,再new个1100,然后赋值,删除原来的,动态增长。
2009-08-30 20:31
bccome
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-8-11
得分:0 
大侠写得很清楚,长见识了,我去试试看,画个图看看
2009-08-30 21:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-284136-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020721 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved