VC编程读取文本数据

       

我们通常把数据存诸在txt文件上,但是我们通常要把这些数据取出来并进行处理。下面我将介绍一种在VC++应用程序中读取文本数据的方法。

一.前言

因为经常要处理地质方面的数据。但是很多数据它不是直接存贮在数据库文件(如Access文件等),而是存贮在txt文件。经常有同学问我怎么通过编程读取实现文本文件中的数据。其实存贮在txt文件也有它的好处,不像读取Access文件那样要注册数据源,设置比较麻烦,编写读取程序也比较复杂。

二.程序原理

首先我们知道假如要进行的文件操作只是简单的读写整行的字符串,那么最好使用CStdioFile,用它来进行此类操作非常方便。因此我们便很自然想到:首先我们把文本文件的每行数据读到一个缓冲区,然后使用sscanf把它转化为字符格式。

那么具体该怎么做呢?比如在一个txt文件里每一行数据格式是这样的:

A1 A2 A3 A3 ......An

那么读取的主体代码是:

CStdioFile File;    // 定义一个CStdioFile类变量File

CString FileData; // 定义一个CString,作为一个缓冲区

/*定义n个临时字符串变量,大小依据实际情况,这里暂设为10

*/

char  TempStr1[10],TempStr2[10]......TempStrN[10];

File.ReadString(FileData); // 将一行数据读到缓冲区

/*将该行数据的n个字符读到n个临时字符串变量*/

sscanf(FileData,"%s %s %s %s ......%s",TempStr1,TempStr2......TempStrN);

这种读法的一个好处是对文本格式要求不严,如下面的格式也可以
(前面可有未知个空格) A1 A2 (两个数据之间也可有未知个空格) A3 A3 ......An

三.编程步骤

下面我以一个单文档程序来具体说明我的做法。该程序的主要功能是读取文本文件的坐标数据,然后在客户区里用直线将这些坐标连起来,并显示。

1、  启动Visual C++6.0,生成一个单文档的工程,将该工程命名为ReadCoodinate。

2、 添加一个“读取文本数据”的菜单项。

3、 给视图类添加两个public变量:

CArray<CPoint,CPoint> m_PointArray; // 用于记录坐标点数据

int m_PointNum;   // 用于记录坐标点个数,在视图类构造函数中初始化为0。

4、 给“读取文本数据”添加相应的单击消息响应函数。代码如下:

void CReadCoodinateView::OnReaddata()

{

// TODO: Add your command handler code here

CFileDialog dlg(TRUE); // 定义一个文件对话框变量

if(dlg.DoModal()==IDOK)

{

CString m_FilePath = dlg.GetPathName(); //取得文件路径及文件名

CStdioFile File;

File.Open(m_FilePath,CFile::modeRead); //以读模式打开文本文件

CString FileData;        //定义一个CString变量作为缓冲区

File.ReadString(FileData);//读取第一行数据,第一行数据为坐标点数据

/*定义两个临时字符串,并初始化为'/0'*/

char TempStr1[10];

char TempStr2[10];

memset(TempStr1,'/0',10);

memset(TempStr2,'/0',10);

sscanf(FileData,"%s",TempStr1);

m_PointNum = atoi(TempStr1);   // 获取坐标点个数

/*逐行读取坐标数据*/

for (int i = 0;i<m_PointNum;i++)

{

File.ReadString(FileData);

sscanf(FileData,"%s %s",TempStr1,TempStr2);

m_PointArray.Add(CPoint(atoi(TempStr1),atoi(TempStr2)));//将其存入坐标点数组

}

CDC *pDC = GetDC(); //获取设备环境;

/*根据坐标点绘出直线*/

for (i = 0;i<m_PointNum-1;i++)

{

pDC->MoveTo(m_PointArray[i].x,m_PointArray[i].y);

pDC->LineTo(m_PointArray[i+1].x,m_PointArray[i+1].y);

}

ReleaseDC(pDC);  //使用完后,释放设备环境

}

}

程序运行结果的效果图如下:

1.选取一个txt文件

2.单击确定后绘制直线,如下图:

其中示例数据文件的格式是这样的:(第一行为坐标个数,余下的是坐标点数据)

5

10  20

30  40

45  85

100  120

200  300

这个程序的一个优点是对文本数据格式并不严格,你可以把数据编辑成下面形式,但读出来的效果是一样的,(只要x坐标和y坐标中间有一个空格就可以了)

5

10        20

30        40

45                 85

100                        120

200         300

三.小结

上面只是小小的示例,读者朋友可以将文本数据传化为其它形式的数据(如将字符型数据转化为浮点型),进行更复杂的数据处理,其中原理是一样的。上面程序的编译环境是:Win2000,VC++6.0。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

VC编程读取文本数据相关推荐

  1. python读取文本数据绘制曲线图

    目录 写在前面 代码 reference 写在前面 1.本文内容 python读取文本数据曲线图 2.转载请注明出处: https://blog.csdn.net/qq_41102371/articl ...

  2. Matlab读取文本数据

    有一个点数据文件,格式如下 height =10,width=15696,num=156960 1796.61, -853.93, 0.00, 0.00, 0.00, 0.00 1801.61, -8 ...

  3. C#读取文本数据(按行读取)

    StreamReader sr = new StreamReader(path, Encoding.Default); //path为文件路径String line;while ((line = sr ...

  4. python读取文本数据--完善中

    目录 小细节 传送门 Mat运算 readline,readlines split,strip '''导入数据input: file_name(string):文件的存储位置output: featu ...

  5. python读取文本数据保存为excel_python 读取txt中每行数据,并且保存到excel

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. Android编程读取手环数据,模仿小米手环 计步数据的展示 View

    废话少说,先来张效果图 源码下载,欢迎Star 刻度线的绘制: private void drawnLine(Canvas canvas) { for (int i = 0; i < 360; ...

  7. MATLAB读取写入文本数据最佳方法 | Best Method for Loading Saving Text Data Using MATLAB

    MATLAB读取文件有很多方法.然而笔者在过去进行数据处理中,由于函数太多,相互混杂,与C#,Python等语言相比,反而认为读取文本数据比较麻烦.C#和Python等高级语言中,对于大部分的文本数据 ...

  8. python读取txt数据-python读取文本文件数据

    本文要点刚要: (一)读文本文件格式的数据函数:read_csv,read_table 1.读不同分隔符的文本文件,用参数sep 2.读无字段名(表头)的文本文件 ,用参数names 3.为文本文件制 ...

  9. python读取txt文件第一行-python读取文本文件数据

    本文要点刚要: (一)读文本文件格式的数据函数:read_csv,read_table 1.读不同分隔符的文本文件,用参数sep 2.读无字段名(表头)的文本文件 ,用参数names 3.为文本文件制 ...

  10. python调用什么函数实现对文件内容的读取_python读取文本文件数据

    本文要点刚要: (一)读文本文件格式的数据函数:read_csv,read_table 1.读不同分隔符的文本文件,用参数sep 2.读无字段名(表头)的文本文件 ,用参数names 3.为文本文件制 ...

最新文章

  1. hs_err_pid
  2. 重温C# clr 笔记总结
  3. 深入理解JVM(5)——虚拟机类加载机制
  4. 【还有这种网站?】庆哥终于知道为什么他的数据结构与算法学的那么好了
  5. 代码执行流水之循环展开优化
  6. 如何解包/编辑/打包boot.img文件
  7. wordvba编程代码大全_面向对象、设计原则、设计模式、编程规范、重构
  8. java 固定listview_listview Button始终放在底部示例
  9. 迁移到其他机器_有赞大数据离线集群迁移实战
  10. 计算机网络原理关于实验中几个指令使用的复习——网络层
  11. IOS的一些文件操作。(沙箱) 在Documents目录下创建文件
  12. jquery中filter(fn)的使用研究
  13. Everything必知必会搜索教程
  14. 修电脑入门名词及等级划分
  15. 8.0高等数学五-斯托克斯公式
  16. 奔驰S400豪华型升级后排电动腿托系统,提升后排乘坐舒适性
  17. 1055: 兔子繁殖问题 这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。
  18. 钛媒体乌镇咖荟 | 数字化改变以流量为核心的平台生态,系统性思维的价值开始显现...
  19. cccccccccccccccccccc
  20. jquery打99乘法表_基于javascript实现九九乘法表

热门文章

  1. 【华为HCIE安全考什么科目?华为HCIE安全考什么知识点?】
  2. java读取txt文件---,java读取TXT文件的方法
  3. QT的Q3DScatter使用(三维可视图)
  4. 数据结构实验报告一 顺序表与链表
  5. 什么是激励函数?(代码+详细注释)
  6. base64加密原理
  7. FasterRCNN详解
  8. 测试 linux CPU 压力
  9. 《ARM64体系结构编程与实践》开始预订了
  10. linux centos7 iso镜像下载,CentOS 7镜像文件下载