文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
.NET频道
 资讯动态   ASP.NET   C#   ADO.NET   VC.NET   VB.NET   .NET Framework   WebService
您现在的位置: IT文谷 >> 开发平台 >> .net framework >> VC.NET >> 文章正文
在VC++应用程序中读取文本数据在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据
在VC++应用程序中读取文本数据
在VC++应用程序中读取文本数据在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据
在VC++应用程序中读取文本数据在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据2007-1-28 14:13:58在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] [2] 下一页  


[1] [2] 下一页

在VC++应用程序中读取文本数据在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据
  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    怎样将成员函数指针强制转换成void*指针?
    缓冲区溢出还是问题吗?C++/CLI安全编码
    实例解析C++/CLI中的接口与泛型
    实例解析C++/CLI中的继承与枚举
    C++函数如何操作堆栈指针esp
    Pure C++:泛型编程:模板特殊化
    在托管C++中利用path对象处理Temp文件
    DotNet剖析系列——控件继承
    C++/CLI中有效使用非托管并列缓存
    Java版本和C++版本简单Stack程序
    VC 6.0 中还可以这样创建对话框
    三种常见中文内码的转换方法!
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 本站原创文章,转载时请注明出自文谷及作者姓名
    ③在本网BBS上发表言论者,文责自负。
    ④如您因版权等问题需要与本网联络,请在30日内联系 。
    在VC++应用程序中读取文本数据在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据
    在VC++应用程序中读取文本数据在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据2007-1-28 14:13:58在VC++应用程序中读取文本数据

    全站热点
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷论坛
    Tel: 0577-65690019      E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2008 wengu.com 文谷 All Rights Reserved
    浙ICP备05000327号