网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > DotNet > VC.NET > 在VC++应用程序中读取文本数据  

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

2007-01-23  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

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

    一。前言

网管bitscn_com

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

    二。程序原理

网管下载dl.bitscn.com

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

    那么具体该怎么做呢?比如在一个txt文件里每一行数据格式是这样的: 网管u家u.bitscn@com

    A1 A2 A3 A3 ……An 网管u家u.bitsCN.com

    那么读取的主体代码是: 网管论坛bbs_bitsCN_com

    CStdioFile File;    // 定义一个CStdioFile类变量File 网管联盟bitsCN@com

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

中国网管论坛bbs.bitsCN.com

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

网管联盟bitsCN@com

    */ 中国网管论坛bbs.bitsCN.com

    char  TempStr1[10],TempStr2[10]……TempStrN[10]; 网管u家u.bitsCN.com

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

网管u家u.bitsCN.com

    /*将该行数据的n个字符读到n个临时字符串变量*/ 网管网www.bitscn.com

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

网管网www_bitscn_com

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

网管论坛bbs_bitsCN_com

    三。编程步骤 网管下载dl.bitscn.com

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

    1、  启动Visual C++6.0,生成一个单文档的工程,将该工程命名为ReadCoodinate. 网管u家u.bitsCN.com

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

网管u家u.bitsCN.com

    3、 给视图类添加两个public变量: 网管网www.bitscn.com

    CArray<CPoint,CPoint> m_PointArray; // 用于记录坐标点数据 网管联盟bitsCN@com

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

中国网管联盟bitsCN.com

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

网管联盟bitsCN@com

    void CReadCoodinateView::OnReaddata() 网管联盟bitsCN_com

    {

网管下载dl.bitscn.com

    // TODO: Add your command handler code here 网管论坛bbs_bitsCN_com

    CFileDialog dlg(TRUE); // 定义一个文件对话框变量 网管联盟bitsCN_com

    if(dlg.DoModal()==IDOK) 网管网www_bitscn_com

    { 中国网管联盟bitsCN.com

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

    CStdioFile File;

网管u家u.bitsCN.com

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

中国网管论坛bbs.bitsCN.com

    CString FileData;        //定义一个CString变量作为缓冲区 网管联盟bitsCN@com

    File.ReadString(FileData);//读取第一行数据,第一行数据为坐标点数据 网管下载dl.bitscn.com

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

网管联盟bitsCN@com

    char TempStr1[10];

网管u家u.bitsCN.com

    char TempStr2[10];

网管网www_bitscn_com

    memset(TempStr1,'\0',10); 网管联盟bitsCN_com

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

网管网www_bitscn_com

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

网管下载dl.bitscn.com

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

网管联盟bitsCN@com

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

网管下载dl.bitscn.com

    for (int i = 0;i<m_PointNum;i++) 网管联盟bitsCN@com

    {

网管u家u.bitsCN.com

    File.ReadString(FileData);

网管网www.bitscn.com

    sscanf(FileData,"%s %s",TempStr1,TempStr2); 网管联盟bitsCN@com

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

中国网管论坛bbs.bitsCN.com

    }

网管联盟bitsCN@com

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

网管网www_bitscn_com

    /*根据坐标点绘出直线*/ 网管网www.bitscn.com

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

网管u家u.bitsCN.com

    {

网管联盟bitsCN_com

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

网管u家u.bitscn@com

    pDC->LineTo(m_PointArray[i+1].x,m_PointArray[i+1].y); 网管联盟bitsCN_com

    } 网管下载dl.bitscn.com

    ReleaseDC(pDC);  //使用完后,释放设备环境 网管网www.bitscn.com

    } 中国网管论坛bbs.bitsCN.com

    } 网管下载dl.bitscn.com

  网管联盟bitsCN@com

网管u家u.bitscn@com


上一页12 下一页
TAGs
 上一篇:缓冲区溢出还是问题吗?C++/CLI安全编码   下一篇:怎样将成员函数指针强制转换成void*指针?
相关文章列表
在VC++应用程序中读取文本数据 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.基于Visual C++的Winsock API
2.入门基础-VC网络编程入门
3.用VC开发IE浏览器插件:IE Toolbar
4.VC++.NET中定义和使用MFC DLL
5.C++中对浮点数的格式化显示
6.VC++技术内幕(第四版)笔记
7.COM和.NET的互操作
8.在VC++应用程序中读取文本数据
9.在VC++中生成伪随机数祥解
10.最常见的20种VC++编译错误信息集合
最新推荐文章:
1.介绍VC6.0的18个实用小技巧
2..Net下进程外COM服务器的实现
3.用VC 6.0实现串行通信的三种方法
4.基于VC.NET的GDI+编程之CImage
5.在MFC下如何定义全局变量和全局函数
6.Visual C++制作一个Sniffer实例
7.VC++环境下浮动工具条的编程
8.Microsoft .NET Compact Framework 数据
9.VC.NET的Direct3D极速入门宝典
10.VC++.NET中定义和使用MFC DLL
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·华为HCSE OSPF路由协议培训教材 V3.0
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血