VC++应用程序中如何读取文本数据

分类: VC.NET   出处:iocblog整理  更新时间:2009-03-21   添加到收藏  

    我们通常把数据存诸在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)

    {

[1] [2] [3] 下一页


Tag: 文本数据



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。